您的位置:首页 > 编程语言 > Qt开发

Qt项目在Windows下结束外部进程

2020-03-02 04:34 1416 查看

Qt项目在Windows下结束外部进程

升级程序在进行升级前,需要结束待升级程序进程,结束部分文件的占用,避免更新文件失败。

调用Windows系统API

包含头文件

#include <Windows.h>
#include <Tlhelp32.h>

使用CreateToolhelp32Snapshot()和Process32Next(),遍历所有进程名称,获取结束进程的pid,并根据pid结束相应进程。

示例代码:

void terminateApp()
{
HANDLE hSnapShot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);

PROCESSENTRY32* processInfo=new PROCESSENTRY32;
processInfo->dwSize=sizeof(PROCESSENTRY32);
int index=0;
int ID = 0;
while(Process32Next(hSnapShot,processInfo)!=FALSE)
{
index++;
int size=WideCharToMultiByte(CP_ACP,0,processInfo->szExeFile,-1,NULL,0,NULL,NULL);
char *ch=new char[size+1];
if(WideCharToMultiByte(CP_ACP,0,processInfo->szExeFile,-1,ch,size,NULL,NULL))
{
if(strstr(ch,"XXXXX.exe"))
{
ID = processInfo->th32ProcessID;
HANDLE hProcess;
hProcess=OpenProcess(PROCESS_ALL_ACCESS,TRUE,ID);
TerminateProcess(hProcess,0);
CloseHandle(hProcess);
}
}
}
CloseHandle(hSnapShot);
delete processInfo;
}

转载于:https://my.oschina.net/yangsenke/blog/825976

  • 点赞
  • 收藏
  • 分享
  • 文章举报
chifenguan5579 发布了0 篇原创文章 · 获赞 0 · 访问量 72 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: