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
后来发现,方法原来是有一位仁兄提供的,忽略了,不过网址没登上去。
就此停笔了。。。