先插入DLL命令
.DLL命令 取模块句柄_API, 整型, "kernel32.dll", "GetModuleHandleA", ,
.参数 程序名, 整数型, ,
.DLL命令 安装钩子, 整数型, , "SetWindowsHookExA", ,
.参数 ihook, 整数型
.参数 lpfunc, 子程序指针
.参数 hin, 整数型
.参数 threadid, 整数型
.DLL命令 卸载钩子, 整数型, , "UnhookWindowsHookEx", ,
.参数 hHook, 整数型
.DLL命令 CopyMemory, , , "RtlMoveMemory", ,
.参数 Destination, 按键信息_
.参数 Source, 整数型
.参数 cbCopy, 整数型
.DLL命令 下一个钩子, 整数型, , "CallNextHookEx", ,
.参数 hHook, 整数型
.参数 icode, 整数型
.参数 wParam, 整数型
.参数 lParam, 整数型
插入自定义数据类型
.数据类型 按键信息_, ,
.成员 虚拟码, 整数型
.成员 扫描码, 整数型
.成员 标记, 整数型
.成员 时间, 整数型
.成员 额外信息, 整数型
插入全局变量
鼠标锁定状态 逻辑型
键盘锁定状态 逻辑型
鼠标锁定钩子句柄 整数型
键盘锁定钩子句柄 整数型
插入子程序
.子程序 键盘钩子处理, 整数型, , 锁键盘 [斩月]
.参数 icode, 整数型
.参数 wparam, 整数型
.参数 lparam, 整数型
.局部变量 按键信息, 按键信息_
.如果真 (键盘锁定状态)
返回 (1)
.如果真结束
CopyMemory (按键信息, lparam, 28)
.如果真 (icode = 0)
.如果真 (按键信息.虚拟码 = #Esc键 或 按键信息.虚拟码 = #Tab键 或 按键信息.虚拟码 = #F4键)
返回 (1)
.如果真结束
.如果真 (按键信息.虚拟码 = 44 或 按键信息.虚拟码 = 145 或 按键信息.虚拟码 = 19) ' Print键 Scroll键 Pause键
返回 (1)
.如果真结束
.如果真 (按键信息.虚拟码 = 91 或 按键信息.虚拟码 = 92 或 按键信息.虚拟码 = 93) ' 左右Win键与菜单键
返回 (1)
.如果真结束
.如果真 (按键信息.虚拟码 = 160 或 按键信息.虚拟码 = 161) ' 左右Shift键
返回 (1)
.如果真结束
.如果真 (按键信息.虚拟码 = 162 或 按键信息.虚拟码 = 163) ' 左右Ctrl键
返回 (1)
.如果真结束
.如果真 (按键信息.虚拟码 = 164 或 按键信息.虚拟码 = 165) ' 左右Alt键
返回 (1)
.如果真结束
返回 (0)
.如果真结束
返回 (下一个钩子 (键盘锁定钩子句柄, icode, wparam, lparam))
.子程序 鼠标钩子处理, 整数型, , 锁鼠标 [斩月]
.参数 code, 整数型
.参数 鼠标标识, 整数型
.参数 lp, 整数型
.如果真 (鼠标锁定状态)
返回 (1)
.如果真结束
.如果真 (鼠标标识 = 513 或 鼠标标识 = 514 或 鼠标标识 = 515) ' 鼠标左键按下,鼠标左键放开,鼠标左键双击
返回 (1)
.如果真结束
.如果真 (鼠标标识 = 516 或 鼠标标识 = 517 或 鼠标标识 = 518) ' 鼠标右键按下,鼠标右键放开,鼠标右键双击
返回 (1)
.如果真结束
返回 (下一个钩子 (鼠标锁定钩子句柄, code, 鼠标标识, lp))
.子程序 键盘锁定, , 公开, 锁定所有键盘按键(锁定后,键盘无法操作!)
.参数 状态, 逻辑型, 可空, 真:锁全键盘(可空为假)假:锁定功能键与Win键Esc键F4键Tab键Print键Soroll键Pause键
键盘锁定钩子句柄 = 安装钩子 (13, &键盘钩子处理, 取模块句柄_API (0), 0)
键盘锁定状态 = 状态
.子程序 鼠标锁定, , , 锁定鼠标键(锁定后,鼠标键无效)
.参数 状态, 逻辑型, 可空, 真:完全锁定鼠标 (可空为假) 假:锁定鼠标左右键
鼠标锁定钩子句柄 = 安装钩子 (14, &鼠标钩子处理, 取模块句柄_API (0), 0) ' 载入鼠标钩子
鼠标锁定状态 = 状态
.子程序 键盘解锁, , , 键盘解锁(键盘锁定后,用来恢复键盘的使用)
卸载钩子 (键盘锁定钩子句柄)
.子程序 鼠标解锁, , 公开, 鼠标键解锁(锁定鼠标键锁定后,用来恢复鼠标的使用)
卸载钩子 (鼠标锁定钩子句柄)
温馨提示:答案为网友推荐,仅供参考