吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 9556|回复: 32
收起左侧

[其他原创] 吾爱破解首发-C#全局HOOK键盘鼠标注意要点及HOOK工具类分享

  [复制链接]
lvyiwuhen 发表于 2019-7-23 23:12
本帖最后由 lvyiwuhen 于 2019-7-23 23:19 编辑

C#全局HOOK键盘鼠标注意要点及HOOK工具类分享
C#实现可捕获几乎所有键盘鼠标事件的钩子类
··闲来无事时,做了一个键盘全局HOOK功能,网上找到的工具类,单独写了一个Demo测试正常,放进另外一个项目中,代码中HOOK正常启动,但是实际却没有HOOK功能,经过几个小时的排查,才发现,原来是启动HOOK需要在程序主线程中启动,在子线程中启动无效。特意分享一下经验,另外也是给自己做个备忘,以待后查。
··下面是我的测试Demo连接,包含HOOK工具类源码,可以单独编译出来做一个DLL文件,方便其他项目调用。
··测试截图:

鼠标和键盘

鼠标和键盘


主线程子线程

主线程子线程


百度云
链接:https://pan.baidu.com/s/1lTcLP_1ATk3O9iu7aKVNJg 提取码:n4ze

免费评分

参与人数 4吾爱币 +9 热心值 +4 收起 理由
yang15086849896 + 1 + 1 好像hook不到鼠标的Xbutton1,Xbutton2。
danzhuangsuyan + 1 热心回复!
Monitor + 3 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
苏紫方璇 + 5 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| lvyiwuhen 发表于 2019-7-25 18:25
本帖最后由 lvyiwuhen 于 2019-7-25 18:28 编辑
wwusq 发表于 2019-7-24 22:38
请教一下,钩子获取相应的信息后,怎么不发给相应的控件,打个比方,焦点在一个文本框处,钩子获取到键盘输 ...

我没做过,网上搜了一下相关文章,有了以下思路:
在消息拦截的回调函数里面,判断产生消息的子窗口类型,如果是你想要的类型(比如文本框类型),就不调用CallNextHookEx,如果不是,就继续调用CallNextHookEx。
例如:
我提供的源码中的
KeyboardHook类里面的HookCallbackProcedure(int nCode, int wParam, IntPtr lParam)回调函数,
你可以修改这个函数里面的内容。


参考博客:
https://www.cnblogs.com/findumars/p/5811644.html
https://www.cnblogs.com/easypass/p/4067445.html
https://www.cnblogs.com/liuqifeng/p/9148898.html
 楼主| lvyiwuhen 发表于 2020-12-7 13:09
本帖最后由 lvyiwuhen 于 2020-12-7 13:10 编辑
颠覆1 发表于 2020-12-7 09:30
老哥,有java实现全局钩子的思路吗?我也是想实现你的功能,只是靠java来写。我查了下要jni。通过java调用d ...

你是说的JAVA调用dll吧,刚百度了一下,用第三方库:jintellitype-1.3.9.jar,JIntellitype.dll,JIntellitype64.dll实现,
下面这篇文章看着写的挺详细的,你可以看看,dll使用方法也有介绍
https://blog.csdn.net/rico_zhou/article/details/80062914


我不用JAVA的,就不验证里面的代码了。
hjm350427 发表于 2019-7-24 08:16
hjm350427 发表于 2019-7-24 08:17
这个软件是不是跟按键精灵一样的?
 楼主| lvyiwuhen 发表于 2019-7-24 10:06
hjm350427 发表于 2019-7-24 08:17
这个软件是不是跟按键精灵一样的?

不好意思,没用过按键精灵,这个只是全局监控你按下了那个键,以及鼠标按下了哪个键。需要其它功能可以自己添加代码实现。
a192424 发表于 2019-7-24 10:59
谢谢老哥分享谢谢
bester 发表于 2019-7-24 11:05
是setwindowhook吗
 楼主| lvyiwuhen 发表于 2019-7-24 11:18

是的,配合使用WINDOWS API函数(GetModuleHandle(string name))代替获取当前实例的函数,防止钩子失效
wwusq 发表于 2019-7-24 22:38
请教一下,钩子获取相应的信息后,怎么不发给相应的控件,打个比方,焦点在一个文本框处,钩子获取到键盘输入字母F,然后文本框怎么拦截这个F,就是这个F不在文本框显示
谢谢
wwusq 发表于 2019-7-25 21:38
lvyiwuhen 发表于 2019-7-25 18:25
我没做过,网上搜了一下相关文章,有了以下思路:
在消息拦截的回调函数里面,判断产生消息的子窗口类型 ...

谢谢,非常感谢
现在做的条码扫描,用钩子可以获取条码,就是没法拦截,没法拦截的意思是如果文本框处有焦点,那么该出就会输入条码
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 18:26

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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