Как по имени 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;
}
 
« Предыдущая статья   Следующая статья »