Используя класс 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 вручную. Я не смог найти исходную ошибку, вот несколько ссылок:

В качестве обходного пути вы бы попытались убрать фокус с адресной строки, у меня сработало следующее:

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);
Другие вопросы по тегам