// 查找指定进程(进程名),返回进程句柄
static HANDLE FindProcess(TCHAR * strProcessName)
{
DWORD aProcesses[1024] = {0L,};
DWORD cbNeeded = 0L, cbMNeeded = 0L;
HMODULE hMods[1024] = {0L,};
HANDLE hProcess = NULL;
TCHAR szProcessName[MAX_PATH] = {0,};
if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded))
{
return NULL;
}
int size = (int) (cbNeeded / sizeof(DWORD));
for(int i=0; i< size; i++)
{
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, aProcesses[i]);
EnumProcessModules(hProcess, hMods, sizeof(hMods), &cbMNeeded);
GetModuleFileNameEx(hProcess, hMods[0], szProcessName, sizeof(szProcessName));
if(_tcsstr(szProcessName, strProcessName) != NULL)
{
return hProcess;
}
CloseHandle(hProcess);
}
return NULL;
}