Java控制电脑硬件的方法有哪些?

[复制链接]
查看11 | 回复3 | 2021-1-27 05:42:40 | 显示全部楼层 |阅读模式
最近在玩一个小游戏,类似于qq炫舞一样的,但是比哪个简单很多,只需要一直不停的按一个键就行了,于是我准备编写一个程序,主要的功能就是键盘不停的按一个按键,于是去了解了java.awt.Robot类,写了一段代码,经过测试也都没什么问题,然后准备去游戏里面试验一番,然后问题出现了——程序在外面运行的时候都没问题,不管是在记事本还是其他的时候都能正常的做到一直按一个按键,但在点击进入游戏界面后,代码就不灵了,我尝试打开游戏里面的对话框,也没有任何输出,就是代表在游戏里,没办法正常运行程序,但一点到外面就可以了。我想可能是代码和游戏还个虚拟机呢,所有想知道java有没有什么办法可以直接做到控制键盘这些硬件的输出,比如调用windowsAPI或者怎么,就是不管什么情况下都做到类似真正的按下某一个按键一样。希望可以帮忙解答一下。
分 -->
回复

使用道具 举报

千问 | 2021-1-27 05:42:40 | 显示全部楼层
或者有没有更底层的api可以完成键盘的模拟。
回复

使用道具 举报

千问 | 2021-1-27 05:42:40 | 显示全部楼层
你可以试一下用管理员身份运行,或者把项目打包成exe,以管理员身份运行,我之前给你做过类似的,但是我不止是操作键盘,当时那款游戏还要操作鼠标,然后就会出现另外一个问题,明明坐标是对的但是每次对应的时候都会出现偏差,可能是因为游戏本身也做了保护,因为robot类并不是真实的硬件输入,游戏做了保护就要想起他办法了
回复

使用道具 举报

千问 | 2021-1-27 05:42:40 | 显示全部楼层
引用2楼qq_41622282的回复:你可以试一下用管理员身份运行,或者把项目打包成exe,以管理员身份运行,我之前给你做过类似的,但是我不止是操作键盘,当时那款游戏还要操作鼠标,然后就会出现另外一个问题,明明坐标是对的但是每次对应的时候都会出现偏差,可能是因为游戏本身也做了保护,因为robot类并不是真实的硬件输入,游戏做了保护就要想起他办法了
后来我使用C语言用keybd_event实现了,哪个就是必须用管理员身份运行,游戏里面打开聊天窗口能做到模拟键盘输出了,但是在游戏里面的小游戏的时候按键就没有用了,估计是游戏有保护机制或者触发条件不是正常的那种,里面太复杂了哈哈哈,勉强在游戏里实现打字算了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行