Java awt Робот по-прежнему не может нажимать стрелки не-numpad на окнах?
Эта ошибка известна годами, но все еще присутствует в Java 1.7.0_25
Версия, которую я использую на Windows 8. Следующий результат одинаков независимо от того, включен я numlock или нет:
Robot bot = new Robot();
bot.keyPress(KeyEvent.VK_UP); //this in documentation is non-numpad up arrow key
bot.keyRelease(KeyEvent.VK_UP); //pressed the numpad up arrow key
//folowing line is line #43
bot.keyPress(KeyEvent.VK_KP_UP); //this in documentation is numpad up arrow key
bot.keyRelease(KeyEvent.VK_KP_UP); //causes folowing exception:
Exception in thread "main" java.lang.IllegalArgumentException: Invalid key code
at sun.awt.windows.WRobotPeer.keyPress(Native Method)
at java.awt.Robot.keyPress(Robot.java:358)
at test.RobotArrow.main(RobotArrow.java:43)
Я знаю, что этот вопрос уже задавался здесь, но более года назад, есть ли прогресс? Я не могу ничего гуглить, есть даже официальное сообщение об ошибке
Итак, есть ли в конечном итоге решение или нет?
2 ответа
// НАЖМИТЕ ОКНА + СТРЕЛКА ВЛЕВО
Robot divideWindow = new Robot();
divideWindow.keyPress(KeyEvent.VK_WINDOWS);
divideWindow.delay(100);
divideWindow.keyPress(KeyEvent.VK_LEFT);
divideWindow.delay(100);
divideWindow.keyRelease(KeyEvent.VK_LEFT);
divideWindow.delay(100);
divideWindow.keyRelease(KeyEvent.VK_WINDOWS);
У меня отлично работает:)
Возможный обходной путь - отключить numlock. Смотрите этот комментарий об ошибке JDK