My function for that:
Code:
DWORD GetProcessByFileName(char* name){
DWORD process_id_array[1024];
DWORD bytes_returned;
DWORD num_processes;
HANDLE hProcess;
char image_name[256];
char buffer[256];
DWORD exitcode;
EnumProcesses(process_id_array, 256*sizeof(DWORD), &bytes_returned);
num_processes = bytes_returned/sizeof(DWORD);
for(int i=0;i<num_processes;i++){
hProcess=OpenProcess(PROCESS_ALL_ACCESS,TRUE,process_id_array[i]);
if(GetModuleBaseName(hProcess,0,image_name,256)){
if(!stricmp(image_name,name)){
CloseHandle(hProcess);
return process_id_array[i];
}
}
CloseHandle(hProcess);
}
return 0;
}
It only fails if you have over 256 processes running which I doubt you have.