5

我正在为 Qt 中的 Windows 编写桌面应用程序。
我有 3 个进程的名称,如果它们正在运行,我想在我的应用程序开始时杀死它们。
最好的方法是什么?(通过使用进程名称获取进程的状态,如果它是打开的,则将其杀死)。

代码示例可以帮助我很多。谢谢!

4

5 回答 5

11

您可以为此目的使用 Qpr​​ocess。在你的应用程序开始时,做

Qprocess p;
p.start("pkill processname1");
p.waitForFinished();
p.start("pkill processname2");
p.waitForFinished();
p.start("pkill processname2");
p.waitForFinished();

或者你可以直接使用系统调用..

system("pkill processname1");
system("pkill processname2");
system("pkill processname3");

在 Windows 环境下,可以使用以下命令来杀死进程

process -k “Process ID”
process -k “Process Name”

您可以在此处阅读更多内容。

于 2012-07-09T03:23:20.670 回答
4

在 Windows 下使用 taskkill 命令你可以调用它使用

QProcess::execute("taskkill /im <processname> /f");

或者

system("taskkill /im <processname> /f");
于 2016-06-23T06:17:21.947 回答
1

QT 不提供任何 API 来杀死不是由您的 QT 项目创建的进程。如果您在 Windows 上,您可以尝试以下代码,如此处所述

#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;
}
于 2017-08-18T13:00:54.407 回答
1

如何运行应用程序

bool ok = QProcess::startDetached("C:\\TTEC\\CozxyLogger\\CozxyLogger.exe");
qDebug() <<  "Run = " << ok;

如何杀死应用程序

 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

于 2018-01-06T07:53:12.203 回答
-3

在 Windows 中右键单击任务栏,选择任务管理器,在进程选项卡上,按名称找到进程。结束任务。

于 2020-01-29T10:02:46.507 回答