windows环境下需要屏蔽一些按键,如Alt+F4,放置程序被关闭。

使用Qt的事件肯定不行,这时候就需要使用到系统API了。windows系统下可以使用钩子来

获取按键事件。具体步骤如下:

 

1. 引入user32.lib,在pro文件中加入

win32{
    LIBS += -luser32
}

 

改动pro文件,记得qmake一下。

 

2. 包含头文件Windows.h

#include<Windows.h>

 

3. 处理钩子的回调函数。

屏蔽按键的关键就在于,识别到按键后return 1,不再继续传递。其他情况就调用CallNextHookEx继续按原来的方式进行。

 

4.使用SetWindowsHookEx函数安装一个钩子

函数有四个参数,第一个是钩子的类型。第二个就是上面写的回调函数,第三个实例句柄和第四个线程ID这里都用不上。

返回值就是钩子处理的句柄,可以用来卸载钩子。 如果安装失败返回值是0。

 

5.测试结果

运行程序后按下alt + F4后打印出信息,且应用程序不被关闭。

 

要屏蔽其他按键只需要查询一下按键的枚举替换上去即可。

 

---> 文章来源于我的个人博客:fearlazy
---> 编程是一件怎么也学不会的事情,但是如果能享受学习的过程也是挺好的。