根据进程名称获取进程pid,结束进程,执行exe文件
2015-06-22 14:40
585 查看
下面代码是我在写程序过程中,找到的很好用,我总结了一下,主要是用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文件。
//获取进程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文件。
相关文章推荐
- QT学习 第一章:基本对话框
- 使用Shiboken为C++和Qt库创建Python绑定
- Windows7下获得System权限问题解决方法
- 安装软件 Nullsoft Install System 2.27汉化版 下载
- PowerShell获取当前进程PID的小技巧
- Could not load type System.ServiceModel.Activation.HttpModule解决办法
- PHP 命令行工具 shell_exec, exec, passthru, system详细使用介绍
- oracle忘记sys/system/scott用户密码的解决方法
- linux mysql 报错:MYSQL:The server quit without updating PID file
- Qt定时器和随机数详解
- Oracle中sys和system的区别小结
- System Repair Engineer (SREng) 功能介绍与下载
- iisapp.vbs iis pid了解对应的网站或应用池
- w3wp.exe占用cpu过高的解决方法第1/2页
- Office 2007 System 常见问题集第1/3页
- php中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)
- 怎样通过iisapp命令查找pid来解决IIS的cpu占用率过高问题
- System 类 和 Runtime 类的常用用法介绍
- Qt实现图片移动实例(图文教程)
- awk中让人郁闷的system()函数