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 ...
随机推荐
- WinForm richtextbox 关键字变红色
private void HilightRichText(RichTextBox control, string hilightString) { int nSel ...
- js替换选中的文字
替换html中选中的文字 function replaceSelection() { if (window.getSelection) { var selecter = window.getSelec ...
- MySQL binlog基本操作
常用操作: 1. 设置启用binlog log-bin = binlog 2. 设置全备和增量备份 #crontab -e * 0 * * 7 /usr/bin/mysqldump mybinlog ...
- 利用PHP取二进制文件头判断文件类型
<?php $files = array('D:\no.jpg', 'D:\no.png','D:\no2.JPEG','D:\no.BMP'); $fileTypes = array( 779 ...
- 迅雷VIP帐号获取小工具
自己写的迅雷vip帐号获取工具,主要是熟悉一下正则表达式 下载地址: 迅雷VIP获取工具 另附vip防踢补丁,不能使用最新迅雷,我使用的是迅雷尊享版2.0.12.258,使用了一段时间,至少没被踢出来 ...
- Linux启动与登陆环境
linux启动流程 参考:http://www.ruanyifeng.com/blog/2013/08/linux_boot_process.html 加载内核,首先读入/boot 目录下的内核文件. ...
- prism4 StockTrader RI 项目分析一些体会2
prism 对于逻辑复杂的页面,通过建立 controller实现逻辑管理 按着一般的做法就是,各模块的viewmodel import由各模块去实例化(理解有限),但是通过controller实现了 ...
- freeCodeCamp:Slasher Flick
返回一个数组被截断n个元素后还剩余的元素,截断从索引0开始. /*思路 利用splice截断数组arr,返回运算后的数组arr; 如果howMany大于或等于数组长度,则返回空数组: */ funct ...
- ios 的touch事件分析
IOS之触摸事件和手势 13.1 事件概述 13.2 触摸事件 13.3 手势 13.1 事件概述 事件是当用户手指触击屏幕及在屏幕上移动时,系统不断发送给应用程序的对象. 系统将事件按照特定的路 ...
- Kubernetes1.5正式发布
Kubernetes1.5正式发布 修复了很多已知问题 进一步增强federation相关特性 将PetSet改名为StatefulSet 将ScheduledJobs改名为CronJobs 新增了命 ...