Использование Java Robot класса. Способы остановить выполнение программы? - PullRequest
3 голосов
/ 07 декабря 2011

Я много раз использовал класс Robot в java как быстрый обходной путь для выполнения черных задач.Остановка выполнения всегда является проблемой (что должно быть много раз во время тестирования).Мне нужен KeyListener, который будет прослушивать клавишу / комбинацию клавиш и останавливать программу.Из моих кратких чтений кажется, что нельзя вставить ключевого слушателя без фрейма или чего-то подобного в фокусе.Для меня фокус означает переднее окно.Это неправильное определение?Если это правильное определение, я не могу держать окно в фокусе, потому что я ползу со своим роботом.Как я могу решить эту проблему?

При наборе текста я пришел к неидеальному решению: программно сфокусировать окно, протестировать нажатие клавиши, затем программно вывести его из фокуса и продолжить.Это возможно?Есть ли лучший способ?

Ответы [ 2 ]

2 голосов
/ 07 декабря 2011

Хотите ли вы global key listener, что-то, что слушает клавиши независимо от того, какое приложение имеет фокус? Это невозможно сделать с помощью Robot / pure Java.

Однако, если вы работаете в Windows, вы можете сделать это с помощью JNA . JNA's KeyHook пример является хорошей отправной точкой.

1 голос
/ 07 декабря 2011

Ну, я не слишком знаком с роботами Java, но проблема KeyListener может быть решена с картами ввода / действия (Руководство здесь ).

В качестве альтернативы, вы можете использовать JOptionPane с сообщением подтверждения («Продолжить роботизацию? Y / N») вместо проверки нажатия клавиши. Тем не менее, не самое лучшее решение.

...