JAVA不同层次模拟按键思路分享

来源:互联网 发布:iphone蜂窝数据快捷键 编辑:程序博客网 时间:2024/06/15 22:12

JAVA不同层次模拟按键思路分享

一、键盘、鼠标输入层次介绍

1、当按下键后,键盘或鼠标产生扫描码不同芯片的键盘产生扫描码不一样)。

2、扫描码被送给相应硬件的驱动驱动将扫描码转换成虚拟码(就是以  vk_  打头的,其实就是byte大小的数了,不同语言的虚拟码不全一样)。

3、虚拟码插入消息队列,等待被传给相应程序。然后就是程序处理的事了。



二、模拟层次介绍

1、局部模拟:用程序生成虚拟码,将虚拟码直接发给程序。

其一:Java自带的Robot就是这么干的。处理普通程序还有效,游戏就不用想了。

其二:jna的自带platform中,User32类 的sendMessage、postMessage方法。处理普通程序还有效,游戏就不用想了。


2、全局模拟:将扫描码、虚拟码插入到消息队列,让后就不管了。

其一:jna的自带platform中,User32类 的keybd_event方法。处理普通程序还有效,游戏就不用想了。

其二:键盘钩子。没试过,没干过C,听说改键是这么做的。


3、驱动级模拟:用程序模仿键盘端口给系统发送扫描码。

这个还没试过,本来准备用jna + winio试一下的。后来发现网上不少说winio太出名了,游戏会针对性防范,再加上winio64位版还要签名,所以没试。不过我想如果真是驱动级的,应该就能行。


三、总结

上面说的“不用想了”,就是经过测试,此路不通。没有范例,只好自己过河摸石头,我都替你们摸好了。上面还有两个思路没有测试,有兴趣的读者可以试一下。或者更有强者在已经再用了,请指点一下。

心态要静若止水。









PS:机缘巧合,我发现了按键魔盒广告,通过某宝搜素按键魔盒,发现了dm.dll哈哈

我用jacob + dm.dll可以控制游戏了。

next article


1 0