Java模拟发送键盘消息 shift组合键

Java中可通过java.awt.Robot来模拟发送消息:键盘消息,鼠标消息之类的。

先来试试

Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_ALT);
robot.keyPress(KeyEvent.VK_RIGHT);

robot.keyRelease(KeyEvent.VK_RIGHT);
robot.keyRelease(KeyEvent.VK_ALT);
robot.keyRelease(KeyEvent.VK_CONTROL);

成功的执行了QQMusic的下一首:Ctrl+Alt+Right

再来试试Kuwo的下一首:Ctrl+Shift+Right

Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_SHIFT);
robot.keyPress(KeyEvent.VK_RIGHT);

robot.keyRelease(KeyEvent.VK_RIGHT);
robot.keyRelease(KeyEvent.VK_SHIFT);
robot.keyRelease(KeyEvent.VK_CONTROL);

狂点。。。没反应,难道不支持Shift键,google之

http://www.webdeveloper.com/forum/showthread.php?t=221722

这位仁兄遇到了相同的问题,不过是在四五年前了,他没有给出解决方案,只是给了一个记录键盘消息的代码,通过这段代码发现:按下SHIFT后,再按Right,会触发SHIFT的release事件和Right的press事件,难道是Java的bug,继续google之

https://forums.oracle.com/forums/thread.jspa?threadID=2230592

另一位仁兄也遇到了这个问题,看来吾道不孤也,而且还是前几个月发生的事情。在他那里,有人指出了问题之所在,这还真是Java的Bug

Bug 4908075
Bug 6463168

让人费解的是bug已经提交N年了,还是没有修复。

还好,有方法可以绕过这个bug:turn off the numlock keys

Toolkit.getDefaultToolkit().setLockingKeyState(KeyEvent.VK_NUM_LOCK, false);

这样,就解决了发送组合键消息时,Shift不能和其他键同时按下的问题。

http://weblogs.java.net/blog/joshy/archive/2003/08/swinghack_keybo.html

后来发现,方法原来是有一位仁兄提供的,忽略了,不过网址没登上去。

就此停笔了。。。


  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值