本课通过易语言键盘钩子来实现屏蔽键盘组合按键:Alt + Tab、Alt + Esc键、Alt + Esc键、Ctrl + Esc 键、左右 WIN 键、Ctrl + A 键等组合按键。键值的获取通过了两种方法,键值 = 取字节集数据 (指针到字节集 (参数三, 1), 3, )和CopyMemory (按键信息, lparam, 28)。
两种方法安装键盘钩子都是如下:
键盘钩子 = SetWindowsHookExA (13, &键盘钩子, GetModuleHandleA (0), 0)
键盘钩子回调方法一源码:
.版本 2 .子程序 键盘钩子, 整数型 .参数 参数一, 整数型 .参数 参数二, 整数型 .参数 参数三, 整数型 .局部变量 键值, 整数型 键值 = 取字节集数据 (指针到字节集 (参数三, 1), 3, ) ' 返回 (1) .如果真 (参数一 = 0) .判断开始 (键值 = #A键) 返回 (1) .' 判断 (键值 = 91 或 键值 = #D键) ' 返回 (1) .' 判断 (键值 = #Alt键 或 键值 = #F4键) ' 返回 (1) .' 判断 (键值 = #Alt键 或 键值 = #Tab键) ' 返回 (1) .' 判断 (键值 = #Ctrl键 或 键值 = #Esc键) ' 返回 (1) .' 判断 (键值 = #Ctrl键 或 键值 = #Alt键 或 键值 = #A键) ' 返回 (1) .默认 .判断结束 .如果真结束 返回 (CallNextHookEx (键盘钩子, 参数一, 参数二, 参数三))
键盘钩子回调方法二源码:
.版本 2 .支持库 spec .子程序 键盘回调, 整数型, , 键盘钩子回调函数 .参数 ncode, 整数型, , 0 .参数 wparam, 整数型, , 按键状态 .参数 lparam, 整数型, , 结构指针 .局部变量 按键信息, KBDLLHOOKSTRUCT CopyMemory (按键信息, lparam, 28) ' 检测系统全局键盘的按下状态 .如果真 (ncode = 0) .判断开始 (wparam = 256 或 wparam = 260) .如果真 (按键信息.vkCode = #Tab键 且 位与 (按键信息.flags, 32) ≠ 0) 调试输出 (“屏蔽了Alt + Tab”) 返回 (1) .如果真结束 .如果真 (按键信息.vkCode = #Esc键 且 位与 (按键信息.flags, 32) ≠ 0) 调试输出 (“屏蔽了Alt + Esc键”) 返回 (1) .如果真结束 .如果真 (按键信息.vkCode = #F4键 且 位与 (按键信息.flags, 32) ≠ 0) 调试输出 (“屏蔽了Alt + F4 键”) 返回 (1) .如果真结束 .如果真 (按键信息.vkCode = #Esc键 且 位与 (GetKeyState (17), 32768) ≠ 0) 调试输出 (“屏蔽了Ctrl + Esc 键”) 返回 (1) .如果真结束 .如果真 (按键信息.vkCode = 91 或 按键信息.vkCode = 92 或 按键信息.vkCode = 93) 调试输出 (“屏蔽了 左右 WIN 键”) 返回 (1) .如果真结束 .如果真 (按键信息.vkCode = #A键 且 位与 (GetKeyState (17), 32768) ≠ 0) 调试输出 (“屏蔽了Ctrl + A 键”) 返回 (1) .如果真结束 .默认
键盘结构体 KBDLLHOOKSTRUCT
.版本 2 .数据类型 KBDLLHOOKSTRUCT .成员 vkCode, 整数型, , , 指定虚拟键值 .成员 scanCode, 整数型, , , 指定键的硬件扫描码。 .成员 flags, 整数型, , , 事件注入标志 .成员 time, 整数型, , , 事件注入时间 .成员 dwExtraInfo, 整数型, , , 额外的信息
卸载键盘钩子
UnhookWindowsHookEx (键盘钩子)
资源教程交流①群:521068947