按键精灵原理.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1/3 按键精灵原理 按键精灵是一类很普遍的游戏插件,wow raid过程中部分职业的某些操作就需要此类插件(文俊的牧师号在打某些BOSS时驱散用到过)。类似的插件无非是用程序来模拟重复性的键盘动作。 游戏中进行键盘操作的程序可以理解为: 按下某键——键盘驱动程序将此事件传递给操作系统——操作系统将此事件插入消息队列——此消息被发送到当前活动窗口。 按照这个过程来理解程序,剩下的只不过要将抽象化的语句翻译成代码。当然很多过程编程工具(.NET)会自动处理,而不需你去理会。(如如何插入消息队列,消息队列的管理,无用对象的释放)。 第一个问题,按下如何用程序来模拟在键盘上按下某键。 日常操作中,当用户在键盘上按下某个按键时,键盘内芯片会检测到这个动作,并将这个信号传递给计算机。对于每个按键,键盘分配给它不同的编码,称做键盘扫描码。当敲击键盘时,底层上实际传递给计算机消息队列的是该按键的键盘扫描码,所以知道了欲按键的扫描码,就可以将该信息传递给电脑,从而达到模拟按键的功能。 第二个问题,键盘驱动程序如何把此事件传递给操作系统。 2/3 解决第一个问题的关键是必须知道按键的键盘扫描码,但是仅仅知道键盘扫描码不够。因为操作系统需要得到的信息的并不是键盘扫描码。因为键盘扫描码是跟具体的硬件相关的,同一个键在不同键盘上的扫描码有可能不同。键盘控制器将这个扫描码传给计算机,然后交给键盘驱动程序。键盘驱动程序会完成相关的工作,并把这个扫描码转换为键盘虚拟码。键盘虚拟码是针对键盘扫描码的非通用性所提出。尽管出于硬件原因,同一个按键可能有不同的扫描码,但是无论什么键盘,同一个按键的虚拟码总是相同的,这样程序就可以识别了。简单点说,虚拟码就是我们经常可以看到的像VK_A,VK_B这样的常数,比如键a的虚拟码(字母大小写虽然是同一个键,但是虚拟码不同)是H61(即十进制的97,一般用16进制来表示虚拟码)。当键盘驱动程序把扫描码转换为虚拟码后,会把这个键盘操作的扫描码和虚拟码还有其它信息一起传递给操作系统。 操作系统在得到这个信息后,会对消息进行封装,然后把这个键盘消息插入到消息列队(这个过程则不需要我们理会)。最后,这个键盘消息最终会被送到当前的活动窗口那里,活动窗口所在的应用程序接收到这个消息后,就知道键盘上哪个键被按下,也就可以根据按键决定该作出什么响应返回给用户了。 明白整个过程后,然后就可以进行编程实现模拟键盘按键操作了。最直接的模拟方法是:直接伪造一个键盘消息发给目标程序。因为键盘信息最终发送的目标程序而引起目标程序的响应。 WINDOWS提供了消息函数(API函数(非托管函数)),这里要用到的主要是: PostMessage(将一条消息投递到指定窗口的消息队列), SendMessage(调用一个窗口的窗口函数,将一条消息发给那个窗口), 3/3 PostMessage函数和SendMessage函数的声明一样,均能向目标程序发送消息,所不同的返回值不同。

文档评论(0)

creepzhang + 关注
实名认证
文档贡献者

工业自动化仪器仪表与装置装配工、低压电工持证人

该用户很懒,什么也没介绍

领域认证该用户于2023年08月19日上传了工业自动化仪器仪表与装置装配工、低压电工

1亿VIP精品文档

相关文档