枚举进程
DWORD FindProcess(TCHAR *strProcessName) { DWORD aProcesses[1024], cbNeeded, cbMNeeded; HMODULE hMods[1024]; HANDLE hProcess; TCHAR szProcessName[MAX_PATH]; if (!EnumProcesses(aProcesses, sizeof(aProcesses), &cbNeeded)) return 0; for (int i = 0; i < (int)(cbNeeded / sizeof(DWORD)); 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)); CString strPrcFullName(szProcessName); CString strPrcName(strProcessName); if (_tcsstr(strPrcFullName, strPrcName) || _tcsstr(strPrcFullName, strPrcName.MakeLower())) { CString strNameFull; strNameFull.Format(_T("Process full name:\n%s;"), szProcessName); //AfxMessageBox(strNameFull); return(aProcesses[i]); } } return 0; }