用c++ 写一个热键快速退出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++的编译选项-连接器中勾选了“不产生控制台窗口”
写在最后
新人学生博主,求支持~~

浙公网安备 33010602011771号