根据进程名称获取进程pid,结束进程,执行exe文件

下面代码是我在写程序过程中,找到的很好用,我总结了一下,主要是用Qt获取进程pid,以及如何通过pid或进程名称结束进程


//获取进程pid

#include<iostream>

#include<windows.h>
#include<Tlhelp32.h>
using namespace std;

//获取启动多个fileName进程id,用qt数据结构存储的,大家也可以转成其它数据存储

QList<int> GetProcessIDs(char *FileName)
{
    QList<int> pids;
    HANDLE myhProcess;
    PROCESSENTRY32 mype;
    mype.dwSize = sizeof(PROCESSENTRY32);
    BOOL mybRet;
    //进行进程快照
    myhProcess=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); //TH32CS_SNAPPROCESS快照所有进程
    //开始进程查找
    mybRet=Process32First(myhProcess,&mype);
    //循环比较,得出ProcessID
    while(mybRet)
    {
        QString temp=QString::fromWCharArray(mype.szExeFile);
        if(strcmp(FileName,temp.toLocal8Bit())==0)
            pids.append(mype.th32ProcessID);
        mybRet=Process32Next(myhProcess,&mype);
    }
    return pids
}

//获取找到的第一个进程fileName的pid

int GetProcessID(char *FileName)
{
    int pid;
    HANDLE myhProcess;
    PROCESSENTRY32 mype;
    mype.dwSize = sizeof(PROCESSENTRY32);
    BOOL mybRet;
    //进行进程快照
    myhProcess=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); //TH32CS_SNAPPROCESS快照所有进程
    //开始进程查找
    mybRet=Process32First(myhProcess,&mype);
    //循环比较,得出ProcessID
    while(mybRet)
    {
        if(strcmp(FileName,mype.szExeFile)==0)
            pid=mype.th32ProcessID;
            break;
        mybRet=Process32Next(myhProcess,&mype);
    }
    return pid
}

//结束进程

system("taskkill /f /t /im 进程名");

system("taskkill /f /t /pid 进程pid");


下面是三种调用exe文件的方法:

system(“*.exe”)

WinExec("*.exe",SW_SHOW) //第一个参数是要调用的exe程序,第二个参数控制界面是否显示。

QProcess::startDetached("explorer "+path); //下面这种是使用Qt方法执行exe文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值