易语言演示线程鼠标钩子和全局鼠标钩子的区别作用

视频教程截图

511遇见

说明

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 (线程鼠标钩子句柄)

教程获取下载:


发布日期:

所属分类: 编程 标签:   


没有相关文章!