乐易论坛-易语言培训教程火山PC视窗中文编程交流论坛

 找回密码
 立即注册

手机号登录

用手机号号登陆

微信登录

微信扫码,快速开始

QQ登录

用QQ账号登陆

办理VIP,定制软件,报名培训联系QQ[重磅]2024年实地培训高清培训目录火山PC版乐易模块使用教程
有了火山,易语言是否还有必要学习吗?易语言0基础入门课程火山PC视窗0基础入门课程
乐易论坛官方QQ群一览表易语言外挂0基础入门课程火山PC视窗火山HOOK入门课程
易语言误报处理课程QQ空间POST课程2022年火山PC易语言POST系列课程
Android逆向Jeb动态调试0基础课程QQ邮箱网页POST课程WeChat个微Hook实战课程
百日Js加密分析实战课程(无密下载)QQ群POST课程h5游戏WebSocket逆向视频
JavaScript加密特训课程易语言汇编快速入门课程破解实战系列课程
手游模拟器脚本0基础课程易语言加密防破解0基础入门课程广告位招租联系QQ1615457736
查看: 18404|回复: 1

[网络教程] 转,易语言【全局】【键盘、鼠标钩子(hook)】教程【纯API不用模块!】

[复制链接]

[网络教程] 转,易语言【全局】【键盘、鼠标钩子(hook)】教程【纯API不用模块!】

[复制链接]
已绑定手机
旧人梦
等级头衔

等級:顶级Vip

Rank: 14Rank: 14Rank: 14Rank: 14

积分成就
易币
贡献
主题
精华
金钱
积分
955
注册时间
2016-1-12
最后登录
1970-1-1

勋章墙

2017-3-6 21:04:06 | 显示全部楼层 |阅读模式

据统计90%查看本帖的人,都已经注册本站了哦

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 a405544641 于 2012-7-28 18:33 编辑

.版本 2
.DLL命令 GetModuleHandle, 整数型, , "GetModuleHandleA", , 获取句柄
    .参数 lpModuleName, 整数型
.DLL命令 CallNextHOOKEx, 整数型, , "CallNextHookEx", , 下一个钩子
    .参数 hhk, 整数型
    .参数 nCode, 整数型
    .参数 wParam, 整数型
    .参数 lParam, 整数型
.DLL命令 SetWindowsHookEx, 整数型, , "SetWindowsHookExA", , 创建钩子
    .参数 idHook, 整数型
    .参数 lpfn, 子程序指针
    .参数 hmod, 整数型
    .参数 dwThreadId, 整数型
.DLL命令 UnHookWindowsHookEx, 逻辑型, , "UnhookWindowsHookEx", , 卸载钩子
    .参数 hhk, 整数型
.DLL命令 WindowFromPoint, 整数型, "user32", "WindowFromPoint", , 返回包含了指定点的窗口的句柄。忽略屏蔽、隐藏以及透明窗口  包含了指定点的窗口的句柄。如指定的点处没有窗口存在,则返回零
    .参数 xPoint, 整数型, , x点值
    .参数 yPoint, 整数型, , y点值;
.DLL命令 CopyMemory, , , "RtlMoveMemory", , 拷贝内存
    .参数 Destination, MOUSEHOOKSTRUCT, 传址
    .参数 Source, 整数型
    .参数 Length, 整数型

GetModuleHandle()是获取一个应用程序或动态链接库的模块句柄。。不要想太多...
第二个是呼叫下一个钩子。
第三个是创建钩子
4:卸载钩子
5:返回坐标处的窗口句柄
6:拷贝内存
然后新建一个自定义数据类型。等下用的。
.版本 2
.数据类型 MOUSEHOOKSTRUCT
    .成员 pt, POINT
    .成员 hwnd, 整数型
    .成员 wHitTestCode, 整数型
    .成员 dwExtraInfo, 整数型
.数据类型 POINT
    .成员 X, 整数型
    .成员 Y, 整数型

然后可以开始写代码了。。。创建2个程序集变量。用来保存键盘钩子和鼠标钩子的代号的 1630246771qurx6j61uhrz.jpg


。   然后创建2个回调函数。鼠标钩子和键盘钩子的回调函数。返回值都是 整数型。都有三个参数。 16321316xij0252az250cj.jpg



。接下来可以写_启动窗口_创建完毕()的代码了。
要创建2个钩子一个键盘钩子。一个鼠标钩子。首先介绍一下创建钩子的命令。 163336yese13sjgy3lnln5.jpg



第一个参数是钩子类型。全局鼠标是14.键盘是13.第二个是子程序指针。。也就是提供刚才我们创建的那两个函数的指针。&是求指针符号。
第三是句柄。填GetModuleHandle(0)就行。第四个填0. 163651nj5c1t51xjzeexgz.jpg



这是图。


然后开始弄回调函数。。先弄键盘钩子的。键盘钩子函数的第二个参数是状态。256按下。257弹起。参数三是键值的指针。注意。。只是指针。我们要把它换成键值。首先新建一个局部变量整数型的键值。然后需要这两个命令。

取字节集数据 (, , )
指针到字节集 (, )

首先是指针到字节集 (, )  第一个参数是指针。填 参数三。  第二个填1。因为键值是一个整数。在字节集里占1位。
然后取字节集数据  第一个参数就是 指针到字节集 (参数三,1 )    我们要取整数型的键值所以第二个参数填3.第三个不填
OK。这样键代码就被我们取出来了有了键值可以好好玩玩了
172157izac8qig3f8qmm8i.jpg







比如。。.
17104829hib2ru3iwe9a62.jpg






ok写完了代码。。不过别忘记。这个函数可是有返回值的。。返回什么呢?这么写    171155h8kch1athddm2gm2.jpg


也就是呼叫下一个钩子。。

ok键盘弄完。弄弄鼠标的。同样。参数三里面有鼠标的坐标。参数二是类型。我只记得512是鼠标移动。513是左单击。具体你们可以调试输出一下参数二。然后看看参数值就懂了。首先我们要把鼠标的坐标取到吧?
现在就来取。
首先新建一个MOUSEHOOKSTRUCT类型的鼠标变量。。。这回自定义数据类型用上了。
1714479h6pidk2vddfdxfd.jpg



然后开始写代码。这回就需要用上   CopyMemory()这个API了。拷贝内存用的
第一个参数填鼠标。。也就是我们刚才创的变量。第二个要填参数三。第三个填20.
然后坐标数据就在变量里了。           横坐标 在     鼠标.pt.x中   纵坐标在鼠标.pt.x。
知道了坐标。这下又可以好好玩玩了。 171930f464ej6eeo6mad4q.jpg



。这样鼠标一移动就调试输出坐标。
好啦。还是要 调用下一个钩子。
1723088ew26h8955vjh88z.jpg



..然后还没完。。。不卸载钩子...可不行。 172355zccnzrcr33lfnkc6.jpg



   结束~好好玩玩吧…………









170922xqtwa6clczz501mq.jpg



回复

使用道具 举报

已绑定手机
weizhuojun
等级头衔

等級:编程入门

Rank: 4

积分成就
易币
贡献
主题
精华
金钱
积分
340
注册时间
2016-5-3
最后登录
1970-1-1

勋章墙

2017-4-22 12:58:27 | 显示全部楼层
拿分走人呵呵,楼下继续!拿分走人呵呵,楼下继续!
回复

使用道具 举报

如果懒得打字,请选择右侧内容快捷回复 提醒:以任何方式进行『恶意灌水』的行为,进行封号处理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

热点推荐上一条 /5 下一条

QQ|网站地图|手机版|小黑屋|乐易论坛 | 湘ICP备19007035号

拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表乐易立场!

娄底市乐易网络科技有限公司声明:乐易原创培训课程版权均为我公司所有,未经许可,不得擅自翻录,盗版,破解本站课课程,我们将保留法律诉讼的权利

GMT+8, 2024-3-29 05:11 , Processed in 0.056190 second(s), 47 queries .

Powered by Discuz! X3.4

Copyright © Tencent Cloud.

快速回复 返回顶部 返回列表