Используя класс Java Robot для симуляции alt+ стрелка вправо, рисует знаки вместо перехода на следующую страницу
Я создаю небольшое Java-приложение с двумя кнопками.
Одна из кнопок должна изменить страницу Chrome на предыдущую,
а второй должен перейти на следующую страницу.
Я использую Java Robot
класс для того, чтобы стимулировать ярлыки, которые выполняют это действие.
// next page (alt + right arrow)
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_ALT);
robot.keyPress(KeyEvent.VK_RIGHT);
robot.keyRelease(KeyEvent.VK_RIGHT);
robot.keyRelease(KeyEvent.VK_ALT);
Код работает, но при нажатии на адресную строку в Chrome,
и затем срабатывает одна из кнопок, затем вместо перехода на следующую \ предыдущую страницу в адресную строку записываются странные знаки. Знаки ♠ ♦
,
Я пытался также изменить порядок между командами, это не помогло.
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_ALT);
robot.keyPress(KeyEvent.VK_RIGHT);
robot.keyRelease(KeyEvent.VK_ALT);
robot.keyRelease(KeyEvent.VK_RIGHT);
1 ответ
Кажется, есть ошибка с java.util.Robot
всегда используя цифровые клавиши [стрелки], просто попробуйте alt + numpad4 или numpad6 вручную. Я не смог найти исходную ошибку, вот несколько ссылок:
- https://bugs.openjdk.java.net/browse/JDK-4838497
- Java awt Робот по-прежнему не может нажимать стрелки не-numpad на окнах?
В качестве обходного пути вы бы попытались убрать фокус с адресной строки, у меня сработало следующее:
robot.keyPress(KeyEvent.VK_ALT);
robot.keyRelease(KeyEvent.VK_ALT);
robot.delay(1); // seems to be required for the event to be registered
robot.keyPress(KeyEvent.VK_ALT);
robot.keyPress(KeyEvent.VK_LEFT);
robot.keyRelease(KeyEvent.VK_LEFT);
robot.keyRelease(KeyEvent.VK_ALT);