文章目录[隐藏]
本课分别演示了鼠标线程钩子和全局钩子的区别,SetWindowsHookExA (14)是全局鼠标钩子,SetWindowsHookExA (7)是线程鼠标钩子。
视频教程截图
说明
1、当一个进程里开启了全局和线程钩子后
2、先执行线程钩子
3、后执行全局钩子
4、全局的钩子属于低级,系统,级别高于线程
5、但全局钩子系统资源占有厉害
6、能线程尽量使用线程钩子
7、无论什么钩子,不使用时要及时卸载钩子!!!!!
8、不同的钩子,它的回调函数都不一样,可能用到结构体也当然不同!!!
安装全局和线程鼠标钩子
鼠标钩子句柄 = SetWindowsHookExA (14, &鼠标全局钩子回调, GetModuleHandleA (0), 0) 线程ID = GetCurrentThreadId () 线程鼠标钩子句柄 = SetWindowsHookExA (7, &线程钩子回调函数, GetModuleHandleA (0), 线程ID)
全局鼠标钩子回调函数
.版本 2 .支持库 eAPI .子程序 鼠标全局钩子回调, 整数型 .参数 参数一 .参数 参数二, , , 鼠标的状态值 .参数 参数三 .局部变量 鼠标, MOUSEHOOKSTRUCT ' 把数据拷贝到鼠标这个变量句柄 CopyMemory (鼠标, 参数三, 20) 句柄 = WindowFromPoint (鼠标.pt.x, 鼠标.pt.y) 标签1.标题 = 到文本 (鼠标.pt.x) + “,” + 到文本 (鼠标.pt.y) 标签2.标题 = “当前鼠标所在窗口的句柄:” + 到文本 (句柄) .判断开始 (参数二 = 513) ' 左键按下 模拟按键 (81, , ) .判断 (参数二 = 519) ' 中键按下 模拟按键 (81, , ) .判断 (参数二 = 516) ' 右键按下 模拟按键 (90, , ) .默认 .判断结束 返回 (CallNextHookEx (鼠标钩子句柄, 参数一, 参数二, 参数三))
线程鼠标钩子回调函数
.版本 2 .子程序 线程钩子回调函数, 整数型 .参数 参数, 整数型, , 消息代码 .参数 鼠标动作, 整数型 .参数 鼠标信息, 整数型 .局部变量 鼠标, MOUSEHOOKSTRUCT ' 把数据拷贝到鼠标这个变量句柄 CopyMemory (鼠标, 鼠标信息, 20) 句柄 = WindowFromPoint (鼠标.pt.x, 鼠标.pt.y) 标签3.标题 = 到文本 (鼠标.pt.x) + “,” + 到文本 (鼠标.pt.y) 返回 (0)
卸载鼠标全局和线程钩子
UnhookWindowsHookEx (鼠标钩子句柄) UnhookWindowsHookEx (线程鼠标钩子句柄)
教程获取下载:
百度网盘链接:https://pan.baidu.com/s/158ikKVjIwaoF4438MG4fhA
提取码:加QQ群:521068947 群文件下载
资源教程交流①群:521068947
511遇见QQ: 272586593