This function should return correct process id. It but if process has parrent process - it returns process id of it's parrent. Why? How to fix it?
DWORD _getProcId(LPCSTR processName)
{
PROCESSENTRY32 entry;
entry.dwSize = sizeof(PROCESSENTRY32);
HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
if (Process32First(snapshot, &entry) == TRUE)
{
while (Process32Next(snapshot, &entry) == TRUE)
{
if (_stricmp(entry.szExeFile, processName) == 0)
{
HANDLE h = OpenProcess(PROCESS_ALL_ACCESS, false, entry.th32ProcessID);
if (h)
{
return GetProcessId(h);
}
else
{
CloseHandle(snapshot);
return 0;
}
}
}
}
CloseHandle(snapshot);
return 0;
}