How to kill process by process name in Qt
我正在Qt中为Windows编写桌面应用程序。
我有3个进程的名称,如果它们正在运行,我想在我的应用程序开始时将其杀死。
最好的方法是什么?(使用进程名称获取进程的状态,如果打开则将其杀死)。
代码示例可以帮助我很多。
谢谢!
您可以为此使用Qprocess。
在您的应用程序开始时,
1 2 3 4 5 6 7 | Qprocess p; p.start("pkill processname1"); p.waitForFinished(); p.start("pkill processname2"); p.waitForFinished(); p.start("pkill processname2"); p.waitForFinished(); |
或者您可以直接使用系统调用。
1 2 3 | system("pkill processname1"); system("pkill processname2"); system("pkill processname3"); |
在Windows环境中,可以使用以下命令杀死进程
1 2 | process -k"Process ID" process -k"Process Name" |
您可以在此处阅读更多内容。
在Windows下使用taskkill命令
您可以使用
1 | QProcess::execute("taskkill /im <processname> /f"); |
要么
1 | system("taskkill /im <processname> /f"); |
如何运行应用
1 2 | bool ok = QProcess::startDetached("C:\\TTEC\\CozxyLogger\\CozxyLogger.exe"); qDebug() << "Run =" << ok; |
如何杀死App
1 2 | system("taskkill /im CozxyLogger.exe /f"); qDebug() <<"Close";[enter image description here][1] |
更多链接:
http://sittikron-big-rmutt.blogspot.com/2018/01/qt-start-and-kill.html
QT没有提供任何API来杀死QT项目未创建的进程。 如果您使用的是Windows,则可以尝试按照以下说明操作以下代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | #include <windows.h> #include <process.h> #include <Tlhelp32.h> #include <winbase.h> #include <string.h> 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; } |
在Windows中,右键单击任务栏,选择"任务管理器",在"进程"选项卡上,按"名称..结束"任务查找进程。