我正在为Qt编写Windows桌面应用程序 我有3个进程的名称,如果它们正在运行,我想在我的应用程序开始时杀死它们 最好的方法是什么?(通过使用进程名称获取进程的状态,如果已打开则终止进程)。
代码示例可以帮助我很多。 谢谢!
答案 0 :(得分:10)
您可以将Qprocess用于此目的。 在您的申请开始时,做
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”
您可以阅读更多这些here。
答案 1 :(得分:2)
在Windows下使用taskkill命令 你可以用
来调用它QProcess::execute("taskkill /im <processname> /f");
或
system("taskkill /im <processname> /f");
答案 2 :(得分:1)
QT没有提供任何API来杀死不是由您的QT项目创建的进程。如果您使用的是Windows,则可以按照here
中的说明尝试使用以下代码#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;
}
答案 3 :(得分:0)
如何运行应用程序
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
答案 4 :(得分:-1)
在Windows中,右键单击任务栏,选择“任务管理器”,在“进程”选项卡上,按“名称..结束”任务查找进程。