c++ 热键快速退出QQ(或其它程序)

2022/3/30 11:19:28

本文主要是介绍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++的编译选项-连接器中勾选了“不产生控制台窗口”

写在最后

新人学生博主,求支持~~



这篇关于c++ 热键快速退出QQ(或其它程序)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程