c++ 热键快速退出QQ(或其它程序)
作者:互联网
创作起因(废话,可以跳过)
因为疫情的缘故,我又不得不上了网课。
网课的内容相比学校课上的内容要简单的多(毕竟原来教我的是重点班老师,现在却是平行班老师给我们上课)
边听课,我就顺便跟铝硼铀在QQ上聊天(嘿嘿~~)
可是Ta的手速很糟糕,Ta母亲进房间的时候,Ta有时会来不及退出QQ,差点被发现......
为了有效避免以上问题,我就花了一节政治课的时间,写了下面这个小程序。
主程序
用法:Alt + K 快速关闭QQ主程序
/*
Author: Pevernow<3450354617@qq.com
Time: 2022.3.30
License: MIT
转载或者二创请保留这些注释
*/
#include <iostream>
#include <Windows.h>
#include <TlHelp32.h>
using namespace std;
bool KillProcess(DWORD ProcessId) {//通过ID杀死程序
HANDLE hProcess=OpenProcess(PROCESS_TERMINATE,FALSE,ProcessId);
if(hProcess==NULL)
return FALSE;
if(!TerminateProcess(hProcess,0))
return FALSE;
return TRUE;
}
bool KillQQ(){//尝试寻找QQ.exe并获取ID然后杀死
HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hProcessSnap == FALSE ) {
cout<<"CreateToolhelp32Snapshot error"<<endl;
return -1;
}
PROCESSENTRY32 pe32;
pe32.dwSize = sizeof(PROCESSENTRY32);
BOOL bRet = Process32First(hProcessSnap, &pe32);
while (bRet) {
if(strcmp(pe32.szExeFile,"QQ.exe")==0){//也可以替换成别的进程名
KillProcess(pe32.th32ProcessID);
}
bRet = Process32Next(hProcessSnap, &pe32);
}
::CloseHandle(hProcessSnap);
return 0;
}
int main() {
if (0 == RegisterHotKey(NULL, 1, MOD_ALT, 0x4B)) {//注册热键
cout << "RegisterHotKey error : " << GetLastError() << endl;
return 0;
}
MSG msg = { 0 };
while (GetMessage(&msg, NULL, 0, 0)){//轮询接收消息,放心,因为是事件触发,几乎不会占用CPU时间
switch (msg.message) {
case WM_HOTKEY:
{
if (1 == msg.wParam) {
KillQQ();
}
break;
}
default:
break;
}
}
return 0;
}
编译建议
我用Dev-C++编译的,静态链接了stdc++和pthread(我明明没用pthread,不知道为什么提示要用这个库,求大神解答一下)
这样就能打包出单文件的可执行程序(大小在3M左右)
同时,为了防止被别人发现,我在Dev-C++的编译选项-连接器中勾选了“不产生控制台窗口”
写在最后
新人学生博主,求支持~~
标签:QQ,return,热键,c++,编译,FALSE,Ta,hProcess 来源: https://www.cnblogs.com/pevernow/p/16075543.html