Borland C++ Builder FAQ
составлен по материалам форума
на sources.ru
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; }