lvyiwuhen 发表于 2019-7-23 23:12

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

本帖最后由 lvyiwuhen 于 2019-7-23 23:19 编辑

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



https://static.52pojie.cn/static/image/hrline/1.gif
百度云
链接:https://pan.baidu.com/s/1lTcLP_1ATk3O9iu7aKVNJg 提取码:n4ze

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

bester 发表于 2019-7-24 11:05
是setwindowhook吗

是的,配合使用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
我没做过,网上搜了一下相关文章,有了以下思路:
在消息拦截的回调函数里面,判断产生消息的子窗口类型 ...

谢谢,非常感谢
现在做的条码扫描,用钩子可以获取条码,就是没法拦截,没法拦截的意思是如果文本框处有焦点,那么该出就会输入条码
页: [1] 2 3 4
查看完整版本: 吾爱破解首发-C#全局HOOK键盘鼠标注意要点及HOOK工具类分享