我试图使用下面的函数从进程中获取 ID,但是 GetLastError 不断返回 ERROR_NO_MORE_FILES 所以它永远没有机会遍历所有进程。我不确定是什么原因造成的。有任何想法吗?同样作为测试,我将参数作为“notepad.exe”传递
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;
}
}