Как по имени exe-файла узнать pid процесса, если он запущен?
|
Оооооочень давно я написал вот эту функцию:
bool GetProcessByExeName(DWORD* Pid,AnsiString ExeName) { HANDLE hProcessSnap = NULL; PROCESSENTRY32 pe32 = {0}; AnsiString temp="";
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPALL, NULL); if(hProcessSnap == (void*)-1) { MessageBox(NULL, "oblom", "oblom", MB_OK|MB_ICONWARNING|MB_SYSTEMMODAL); return false; } pe32.dwSize=sizeof(PROCESSENTRY32);
if(Process32First(hProcessSnap,&pe32)) temp=pe32.szExeFile; if((temp.UpperCase()).Pos(ExeName)) { *Pid= pe32.th32ProcessID; CloseHandle (hProcessSnap); return true; } pe32.dwSize=sizeof(PROCESSENTRY32);
while(Process32Next(hProcessSnap,&pe32)) { temp=pe32.szExeFile; if((temp.UpperCase()).Pos(ExeName)) { *Pid= pe32.th32ProcessID; CloseHandle(hProcessSnap); return true; } pe32.dwSize=sizeof(PROCESSENTRY32); } CloseHandle(hProcessSnap); *Pid=0; return false; }
|