前言
在Windows应用程序开发中,全局钩子(Hook)是一项强大的技术,允许我们监视系统中的特定事件。本文将详细介绍如何使用易语言调用Windows API函数SetWindowsHookEx来实现全局鼠标和键盘钩子,从而监听系统的鼠标键盘消息。 下面是讲解和部分代码 完整代码上方下载可直接运行 不需要任何模块
技术原理
SetWindowsHookEx是Windows API中用于安装钩子过程的重要函数。通过它,我们可以安装各种类型的钩子,其中:
-
键盘钩子(WH_KEYBOARD_LL,值为13):监视低级键盘输入事件
-
鼠标钩子(WH_MOUSE_LL,值为14):监视低级鼠标输入事件
这两个钩子类型属于全局钩子,即使应用程序没有焦点,也能捕获系统的键盘鼠标消息。
1. 程序集变量声明
.程序集 窗口程序集_窗口1
.程序集变量 键盘钩子, 整数型
.程序集变量 鼠标钩子, 整数型
这里声明两个整数型变量,用于保存安装的钩子句柄。后续卸载钩子时需要用到这些句柄。
2. 安装钩子
.子程序 _按钮1_被单击
键盘钩子 = SetWindowsHookEx (13, &键盘钩子回调函数, GetModuleHandle (0), 0)
鼠标钩子 = SetWindowsHookEx (14, &鼠标钩子回调函数, GetModuleHandle (0), 0)
SetWindowsHookEx参数说明:
-
第一个参数:钩子类型,13表示键盘钩子,14表示鼠标钩子
-
第二个参数:回调函数地址,使用
&取函数地址 -
第三个参数:模块句柄,
GetModuleHandle(0)获取当前应用程序实例句柄 -
第四个参数:线程ID,0表示全局钩子,监视所有线程\
3. 卸载钩子
.子程序 _按钮2_被单击
UnHookWindowsHookEx (键盘钩子)
UnHookWindowsHookEx (鼠标钩子)
主要函数代码较长就不一段一段发了下面时完整的代码
.版本 2
.支持库 spec
.程序集 窗口程序集_窗口1, , , www.ikdya.com
.程序集变量 键盘钩子, 整数型
.程序集变量 鼠标钩子, 整数型
.子程序 _按钮1_被单击
键盘钩子 = SetWindowsHookEx (13, &键盘钩子回调函数, GetModuleHandle (0), 0)
鼠标钩子 = SetWindowsHookEx (14, &鼠标钩子回调函数, GetModuleHandle (0), 0)
.子程序 _按钮2_被单击
UnHookWindowsHookEx (键盘钩子)
UnHookWindowsHookEx (鼠标钩子)
.子程序 键盘钩子回调函数, 整数型
.参数 参数一, 整数型
.参数 参数二, 整数型, , 256=按下,257=放开
.参数 参数三, 整数型
.局部变量 键值, 整数型, , , 键代码
键值 = 取字节集数据 (指针到字节集 (参数三, 1), 3, )
调试输出 (“键盘操作”, 参数二, 键值) ' 256是按下 257是松开
返回 (CallNextHookEx (鼠标钩子, 参数一, 参数二, 参数三))
.子程序 鼠标钩子回调函数, 整数型
.参数 参数一, 整数型
.参数 参数二, 整数型, , 消息类型
.参数 参数三, 整数型
.局部变量 鼠标, MOUSEHOOKSTRUCT
CopyMemory (鼠标, 参数三, 20)
.如果真 (参数二 = 512) ' 鼠标移动
调试输出 (“鼠标移动了”, 参数二, 鼠标.pt.X, 鼠标.pt.Y)
.如果真结束
.如果真 (参数二 ≠ 512) ' 如果不是移动消息 那么就是点击消息 513左键按下 514左键松开 516右键按下 517右键松开
.判断开始 (参数二 = 522) ' 判断是点击还是移动
调试输出 (“滚轮操作”, 参数二, 鼠标.hwnd, ) ' 鼠标滚轮消息
.默认
调试输出 (“点击操作”, 参数二, 鼠标.pt.X, 鼠标.pt.Y) ' 鼠标点击消息
.判断结束
.如果真结束
返回 (CallNextHookEx (鼠标钩子, 参数一, 参数二, 参数三))
运行截图

© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END


![微博评论爬取回复接口C++源码[2026-03-06更新]-可达鸭小栈](https://www.ikdya.com/wp-content/uploads/2026/03/image-16-300x163.png)
![私有化部署源码[2026-03-07更新]-可达鸭小栈](https://www.ikdya.com/wp-content/uploads/2026/03/QQ20260309-160657-300x192.png)

![计算抖音a_bogus的值 易语言源码[2026-02-28更新]-可达鸭小栈](https://www.ikdya.com/wp-content/uploads/2026/02/QQ20260228-152935-300x163.png)








暂无评论内容