Q:

Не ищется процесс

Я ищу PID процесса через функцию:
DWORD GetProcessByName(const char* process_name)
{
std::cout << process_name << std::endl;
HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
PROCESSENTRY32 process;
DWORD proc_id = 0;
std::cout << Process32First(snapshot, &process) << std::endl;
if (Process32First(snapshot, &process))
{

    while (Process32Next(snapshot, &process))
    {

        if (_stricmp(process.szExeFile, process_name) == 0)
        {

            proc_id = process.th32ProcessID;
            break;
        }
    }
}
CloseHandle(snapshot);
return proc_id;
}

Если я ввожу имя процесса вручную,то все находится:
    char process_name[32];
    std::cout << "enter process name: ";
    std::cin >> process_name;
    pID = GetProcessByName(process_name);

А если ищу процесс так,то ничего не находится:
    GetProcessByName("proc.exe");
причем если передавать строковую константу в функцию,то даже Process32First(snapshot, &process) почему то всегда равно нулю.

A:

А кто в структуре 
PROCESSENTRY32 process;

будет делать это:

The calling application must set the dwSize member of PROCESSENTRY32 to the size, in bytes, of the structure.

Допишите:
PROCESSENTRY32 process;
process.dwSize = sizeof(PROCESSENTRY32);

