Qt实现的根据进程名来结束进程
1、头文件及实现部分:
#include <windows.h>
#include <tlhelp32.h>
#include "psapi.h"
#pragma comment(lib,"psapi.lib") #include <QtCore/QCoreApplication>
#include <QProcess> int TerminateProcess(QString ProcessName, QString sPathName = "")
{
int result = ;
QString processName; //提升进程权限
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
int n = OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, &hToken);
LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &tkp.Privileges[].Luid);
tkp.PrivilegeCount = ;
tkp.Privileges[].Attributes = SE_PRIVILEGE_ENABLED;
n = AdjustTokenPrivileges(hToken, FALSE, &tkp, , (PTOKEN_PRIVILEGES)NULL, );
CloseHandle(hToken); HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, ) ;
PROCESSENTRY32 pInfo;
pInfo.dwSize = sizeof(pInfo);
Process32First(hSnapShot, &pInfo);
do
{
//遍历任务的所有进程
processName = (QString::fromUtf16(reinterpret_cast<const unsigned short *>(pInfo.szExeFile)));
if (processName == ProcessName)
{
//找到该进程 取出pid
int nPID = pInfo.th32ProcessID; //已知pid获取路径
TCHAR wcPath[MAX_PATH] = {};
HANDLE hProcess = ;
hProcess = OpenProcess(PROCESS_ALL_ACCESS , FALSE, nPID);
GetModuleFileNameEx(hProcess, NULL, wcPath, MAX_PATH);
CloseHandle(hProcess);
QString path = QString::fromUtf16(reinterpret_cast<const ushort *>(wcPath)); //如果使用默认参数 直接根据进程名终止进程 否则根据程序路径结束
if (sPathName.compare("") == || path == sPathName)
{
QString cmd;
cmd = QString("taskkill /F /PID %1 /T").arg(nPID);
QProcess p();
p.start(cmd);
p.waitForStarted();
p.waitForFinished();
result ++;
}
}
} while(Process32Next(hSnapShot, &pInfo));
CloseHandle(hSnapShot);
return result;
}
2、使用:
int main(int argc, char *argv[])
{
//QCoreApplication a(argc, argv);
TerminateProcess("QQ.exe");
//return a.exec();
}
Qt实现的根据进程名来结束进程的更多相关文章
- C# 查找、结束进程 - 通过进程名精确、模糊查找、结束进程
/// <summary> /// 根据“精确进程名”结束进程 /// </summary> /// <param name="strProcName" ...
- Linux查看和结束进程命令详解
在ubuntu中,终止一个进程或终止一个正在运行的程序,一般是通过 kill .killall.pkill.xkill 等进行. ----------------------------------- ...
- Linux编程 7 (实时监测进程 top, 结束进程kill,killall)
一. 实时监测进程 top 在一篇里讲到ps命令在收集进程信息时非常有用,但它只能显示某个特定时间点的信息.想要观察那些频繁换进换出的内存进程趋势,用top命令是合适的.使用top命令如下图所示: 在 ...
- win7结束进程 时,提示“拒绝访问”、“没有此任务的实例运行”怎么办?
开发了个程序,创建了一个进程,但是杀不掉了,在任务管理器里面 右键--结束进程,提示“拒绝访问”,或者“没有此任务实例运行” 怎么办? 直接给答案:PCHunter 具体方法: 1.打开PCHunte ...
- Win通过端口号结束进程
准备: 01在cmd中查看命令使用 格式:命令名称 /? 02netstat 03findstr C:\Users\Good>findstr /? 在文件中寻找字符串. ...... strin ...
- C# 保护进程不被结束(源代码)防任务管理器结束进程
C# 保护进程不被结束(源代码)防任务管理器结束进程 Posted on 2013-03-25 16:03 快乐家++ 阅读(3173) 评论(3) 编辑 收藏 闲来无事,英语又学的太痛苦.看到我妈妈 ...
- 如何用dos命令结束进程
ntsd 是一条dos命令,功能是用于结束一些常规下结束不了的死进程. 用法为打开cmd 后输入以下命令就可以结束进程: 方法一:利用进程的PID结束进程 命令格式:ntsd -c q -p pid ...
- C#-訪问轰炸机,新建进程,结束进程...(ConsoleApp)---ShinePans
这个程序能够自己主动打开要打开的网址,而且自己主动结束进程,这样能够达到博文点击流量的添加 program.cs using System; using System.Collections.Gene ...
- linux查看进程与结束进程
查看所有进程 ps -ef ps -ef | grep 查找的进程名 结束进程 ps -ef | grep 查找的进程名 | grep -v grep | awk '{print $2}' | xar ...
随机推荐
- VS2008设置断点不命中
网上试了各种办法都不好使,最后想到要修复一下,其实只要重置一下开发环境就好了,具体方法如下: 开始 --> Microsoft Visual Studio 2008 --> Visual ...
- Java Reflection
Java语言的反射机制 1. Java反射的含义:获取应用中正在运行的Java对象. 2. Java反射机制: 在运行的程序中,对于任意的类,都可以知道这个类的属性.方法以及构造函数,对于任意对象都可 ...
- XHTML标签的嵌套规则分析
在 XHTML 的语言里,我们都知道:ul 标签包含着 li.dl 标签包含着 dt 和 dd——这些固定标签的嵌套规则十分明确.但是,还有许多标签是独立的,它们没有被捆绑在一起,比如 h1.div. ...
- Excel列名 字母和数字的转换
Excel的列名是由于字母组成的. A-Z 分别代表1-26 AA 是27 AB是28 以此类推. 以下是这种编码的转换方法,如果遇到需要用纯字母编号来表示数字的时候可以用到. /** * 类似EX ...
- tomcat(一)--java基础
什么是java java所涉及到的相关概念如下图.总体来说就是java语言.java API.jvm等构成. jvm:java虚拟机,java的代码都是运行在jvm上,这是java语言跨平台的保证,针 ...
- Oracle DBA常用查询
Oracle DBA常用查询 –1. 查询系统所有对象select owner, object_name, object_type, created, last_ddl_time, timestamp ...
- [LeetCode][Java]Triangle@LeetCode
Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent n ...
- --with-http_realip_module选项(后台Nginx服务器记录原始客户端的IP地址 )
转自:http://blog.itpub.net/27043155/viewspace-734234/ 通过这个模块允许我们改变客户端请求头中客户端IP地址值(例如,X-Real-IP 或 X-For ...
- LinuxMM--Memory Pressure
Memory pressure定义在操作系统中,用户分配.文件缓存.网卡包缓冲区等等都会消耗内存.一旦出现内存紧张就会导致memory pressure.引发当某个任务需要请求内存时就有可能引发mem ...
- 增强拉格朗日乘子法(Augmented Lagrange Method)
增强拉格朗日乘子法的作用是用来解决等式约束下的优化问题, 假定需要求解的问题如下: minimize f(X) s.t.: h(X)=0 其中,f:Rn->R; h:Rn->Rm 朴素拉格 ...