关于Windows:如何在Qt中按进程名称杀死进程

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中,右键单击任务栏,选择"任务管理器",在"进程"选项卡上,按"名称..结束"任务查找进程。