C#键盘钩子
楼主有C#基础,会调用一些API,但是看了网上好多钩子的实例,我完全不能理解啊,悲剧,我想实现在其它程序达到改建的目的,比如魔兽改建,也看了源码,但是无从入手,我想知道我...
楼主有C#基础,会调用一些API,但是看了网上好多钩子的实例,我完全不能理解啊,悲剧,我想实现在其它程序达到改建的目的,比如魔兽改建,也看了源码,但是无从入手,我想知道我需要学习那些东西才能明白这些。。或者谁能给我讲讲如何在其它程序达到改建效果
展开
1个回答
展开全部
用C#的名词给你讲...
钩子你可以理解为一个操作系统级的事件....
当你为钩子注册一个函数的时候 也就是在这个事件链上提交了一个委托(函数指针...)
你可以对这个事件参数进行编辑(类似EventArgs获得事件的细节并且给予返回值)
然后手动调用事件链的下一个事件...
其实钩子就是这么一回事...
注册键盘钩子 你就相当于注册了一个事件
这个事件细节里包含着按键去向窗体的句柄 按键的一些细节(键位 按下还是弹起啥啥的 有没有功能键同时按下啥的...)
然后你可以修改细节(嗯 也就是改键功能)
然后返回给窗体去dispatch...
其实理解了就这么简单。
注意的细节就是你的委托要留一个引用 否则会被GC回收掉...
钩子你可以理解为一个操作系统级的事件....
当你为钩子注册一个函数的时候 也就是在这个事件链上提交了一个委托(函数指针...)
你可以对这个事件参数进行编辑(类似EventArgs获得事件的细节并且给予返回值)
然后手动调用事件链的下一个事件...
其实钩子就是这么一回事...
注册键盘钩子 你就相当于注册了一个事件
这个事件细节里包含着按键去向窗体的句柄 按键的一些细节(键位 按下还是弹起啥啥的 有没有功能键同时按下啥的...)
然后你可以修改细节(嗯 也就是改键功能)
然后返回给窗体去dispatch...
其实理解了就这么简单。
注意的细节就是你的委托要留一个引用 否则会被GC回收掉...
追问
嗯,刚刚试着做了一个魔兽的改建程序,测试能够运行,不知道你玩过魔兽没,遇到了一个问题:
dota里默认F1是选取英雄,但是如果我把其它的键改成F1,会先执行我的函数,然后再选取英雄,这样就不能达到改建的目的了,我想知道如何屏蔽掉这个,即 修改我输入的按键,传入修改后的值,我输入的值不传递到程序
追答
钩子的返回值表示是否要传递到下个函数
true还是false我忘了-A- 自己试试...
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询