C#键盘钩子

楼主有C#基础,会调用一些API,但是看了网上好多钩子的实例,我完全不能理解啊,悲剧,我想实现在其它程序达到改建的目的,比如魔兽改建,也看了源码,但是无从入手,我想知道我... 楼主有C#基础,会调用一些API,但是看了网上好多钩子的实例,我完全不能理解啊,悲剧,我想实现在其它程序达到改建的目的,比如魔兽改建,也看了源码,但是无从入手,我想知道我需要学习那些东西才能明白这些。。或者谁能给我讲讲如何在其它程序达到改建效果 展开
 我来答
百度网友cfe4d0f
2013-04-02 · TA获得超过1502个赞
知道小有建树答主
回答量:937
采纳率:100%
帮助的人:869万
展开全部
用C#的名词给你讲...
钩子你可以理解为一个操作系统级的事件....
当你为钩子注册一个函数的时候 也就是在这个事件链上提交了一个委托(函数指针...)
你可以对这个事件参数进行编辑(类似EventArgs获得事件的细节并且给予返回值)
然后手动调用事件链的下一个事件...

其实钩子就是这么一回事...

注册键盘钩子 你就相当于注册了一个事件
这个事件细节里包含着按键去向窗体的句柄 按键的一些细节(键位 按下还是弹起啥啥的 有没有功能键同时按下啥的...)
然后你可以修改细节(嗯 也就是改键功能)
然后返回给窗体去dispatch...

其实理解了就这么简单。
注意的细节就是你的委托要留一个引用 否则会被GC回收掉...
追问
嗯,刚刚试着做了一个魔兽的改建程序,测试能够运行,不知道你玩过魔兽没,遇到了一个问题:

dota里默认F1是选取英雄,但是如果我把其它的键改成F1,会先执行我的函数,然后再选取英雄,这样就不能达到改建的目的了,我想知道如何屏蔽掉这个,即 修改我输入的按键,传入修改后的值,我输入的值不传递到程序
追答
钩子的返回值表示是否要传递到下个函数
true还是false我忘了-A- 自己试试...
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式