如何按名称杀死进程? (Win32 API)

基本上,我有一个不止一次推出的程序。 因此,该计划将启动两个或更多流程。

我想使用Win32 API并使用特定名称终止/终止所有进程。

我已经看到了杀死进程的示例,但没有看到具有完全相同名称(但参数不同)的多个进程。

尝试下面的代码, killProcessByName()将杀死名称为filename任何进程:

 #include  #include  #include  #include  #include  void killProcessByName(const char *filename) { HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, NULL); PROCESSENTRY32 pEntry; pEntry.dwSize = sizeof (pEntry); BOOL hRes = Process32First(hSnapShot, &pEntry); while (hRes) { if (strcmp(pEntry.szExeFile, filename) == 0) { HANDLE hProcess = OpenProcess(PROCESS_TERMINATE, 0, (DWORD) pEntry.th32ProcessID); if (hProcess != NULL) { TerminateProcess(hProcess, 9); CloseHandle(hProcess); } } hRes = Process32Next(hSnapShot, &pEntry); } CloseHandle(hSnapShot); } int main() { killProcessByName("notepad++.exe"); return 0; } 

注意:代码区分大小写,您可以编辑它以区分大小写。

我刚遇到类似的问题。 这就是我想出来的……

 void myClass::killProcess() { const int maxProcIds = 1024; DWORD procList[maxProcIds]; DWORD procCount; char* exeName = "ExeName.exe"; char processName[MAX_PATH]; // get the process by name if (!EnumProcesses(procList, sizeof(procList), &procCount)) return; // convert from bytes to processes procCount = procCount / sizeof(DWORD); // loop through all processes for (DWORD procIdx=0; procIdx