c++ 熱鍵快速退出QQ(或其它程式)
阿新 • • 發佈:2022-03-30
創作起因(廢話,可以跳過)
因為疫情的緣故,我又不得不上了網課。
網課的內容相比學校課上的內容要簡單的多(畢竟原來教我的是重點班老師,現在卻是平行班老師給我們上課)
邊聽課,我就順便跟鋁硼鈾在QQ上聊天(嘿嘿~~)
可是Ta的手速很糟糕,Ta母親進房間的時候,Ta有時會來不及退出QQ,差點被發現......
為了有效避免以上問題,我就花了一節政治課的時間,寫了下面這個小程式。
主程式
用法:Alt + J 快速關閉QQ主程式
/* Author: Pevernow<[email protected] 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++的編譯選項-聯結器中勾選了“不產生控制檯視窗”
寫在最後
新人學生博主,求支援~~