Im пытается получить идентификатор из процесса, используя функцию ниже, однако GetLastError продолжает возвращать ERROR_NO_MORE_FILES, чтобы он никогда не получал возможность перебирать все процессы. Я не уверен, что вызывает это. Есть идеи? Кроме того, в качестве теста я проходил в парах, как «notepad.exe»Ошибка получения идентификатора процесса. «ERROR_NO_MORE_FILES»
int GetProcID(string ProcName){
PROCESSENTRY32 PE32;
HANDLE ProcSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
PE32.dwSize = sizeof(PROCESSENTRY32);
if(!Process32First(ProcSnapshot,&PE32))
return 0;
else
if(PE32.szExeFile == ProcName)
return PE32.th32ProcessID;
else
{
while(GetLastError() != ERROR_NO_MORE_FILES){
Process32Next(ProcSnapshot,&PE32);
if(PE32.szExeFile == ProcName)
return PE32.th32ProcessID;
}
return 0;
}
}
Самое интересное условие в ваших блоках 'if()'. Я не думаю, что вы запустили это в отладчике? – WhozCraig
Вы также просачиваете дескриптор, возвращенный из 'CreateToolhelp32Snapshot()'. Вы можете исправить это, пока вы на нем (или разместите свой * реальный * код, если это не так). – WhozCraig