Robot.keyPress不适用于VK_ALT_GRAPH(密钥代码无效)

时间:2014-04-07 17:50:30

标签: java keypress keyevent awtrobot

我正在开发远程应用程序。(鼠标 - 键盘)我只是快速展示我的问题......

它适用于'A'或一些基本字符。

    case "a":
    robot.keyPress(KeyEvent.VK_A);

但我没有做'@'字符。我的方式看起来像这样。

 case "@":
 robot.keyPress(KeyEvent.VK_ALT_GRAPH);
 robot.keyPress(KeyEvent.VK_Q);
 robot.keyRelease(KeyEvent.VK_ALT_GRAPH);

当我使用VK_ALT_GRAPH时,我看到异常;

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Invalid key code
at sun.awt.windows.WRobotPeer.keyPress(Native Method)
at java.awt.Robot.keyPress(Unknown Source)

这是一个错误吗?我怎么能按'@'char?也是这样,我不能这样做; $,#,? ,[,],{,},',* ...

2 个答案:

答案 0 :(得分:1)

我知道这已经很老了,但是没有人给出正确的答案,在练习后我找到了解决方法。

那是我的键盘:

enter image description here

,如果要按@或#,则必须这样做:

            bot.keyPress(VK_CONTROL);
            bot.keyPress(VK_ALT);
            bot.keyPress(VK_3);

            bot.keyRelease(VK_CONTROL);
            bot.keyRelease(VK_ALT);
            bot.keyRelease(VK_3);

答案 1 :(得分:1)

您需要这个:

robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_ALT);
robot.keyPress(KeyEvent.VK_Q);
robot.keyRelease(KeyEvent.VK_ALT);
robot.keyRelease(KeyEvent.VK_CONTROL);