键盘锁定dll动态链接库之屏蔽键盘各种按键和组合键

易语言 2020-09-01 17:42:37

键盘锁定dll动态链接库之屏蔽键盘各种按键和组合键

.如果真 (nCode = #HC_ACTION)
.判断开始 (wParam = #WM_KEYDOWN 或 wParam = #WM_SYSKEYDOWN)
取按键信息数据 (按键信息, lParam, 28)
' 实现模拟按键代码
.如果真 (按键信息.vkCode = #Tab键 且 位与 (按键信息.flags, #LLKHF_ALTDOWN) ≠ 0)
' 屏蔽ALT+TAB
返回 (1)
.如果真结束
.如果真 (按键信息.vkCode = #Esc键 且 位与 (按键信息.flags, #LLKHF_ALTDOWN) ≠ 0)
' 屏蔽ALT+ESC
返回 (1)
.如果真结束
.如果真 (按键信息.vkCode = #F4键 且 位与 (按键信息.flags, #LLKHF_ALTDOWN) ≠ 0)
' 屏蔽ALT+F4
返回 (1)
.如果真结束
.如果真 (按键信息.vkCode = #Esc键 且 位与 (按键信息.flags, 32768) ≠ 0)
' 屏蔽CTRL+ESC
返回 (1)
.如果真结束
.如果真 (按键信息.vkCode = 91 或 按键信息.vkCode = 92 或 按键信息.vkCode = 93)
' 左右Win 和徽标键
返回 (1)
.如果真结束

.默认

.判断结束

.如果真结束
返回 (CallNextHookEx (钩子句柄, nCode, wParam, lParam))

.判断开始 (调用类型 = #DLL_PROCESS_ATTACH) ' 载入
' 创建更替SAS window回调函数的线程
.如果真 (FOldProc = 0)
线程句柄 = CreateThread (0, 0, &ThreadFunc, 0, 0, 线程Id)
.如果真结束

.判断 (调用类型 = #DLL_PROCESS_DETACH) ' 卸载
' 恢复原有SAS window的回调函数
.如果真 (FOldProc ≠ 0)
SetWindowLong (hSASWnd, #GWL_WNDPROC, FOldProc)
.如果真结束
.如果真 (钩子句柄 ≠ 0)
UnhookWindowsHookEx (钩子句柄)