Java AWT Robot размещает щелчки мыши в совершенно случайных местах на экране [видео объяснение]

Я пытаюсь написать программу, в которой пользователь может создавать сценарии щелчков и нажатий клавиш и выполнять их по порядку. Наиболее важной особенностью этой программы является возможность точно размещать щелчки по нужным координатам на экране. Я сделал эту программу год назад в C#, но сейчас я повторяю ее в JavaFX, чтобы она была красивее. Я использую JNativeHook для ключевых слушателей и слушателей мыши.

Вот проблема, с которой я сталкиваюсь: при запуске robot.mouseMove () курсор отправляется в совершенно случайное место на экране. Я проверяю это путем вывода текущего местоположения курсора как внутри функции mousePressed NativeMouseListener, так и внутри класса с роботом. Чтобы получить положение мыши в NativeMouseLIstener, я использую функции getX и getY NativeMouseEvents, которые абсолютно точны. Затем для другого вывода я использую PointerInfo.getPointerInfo (), который имеет различный результат. Когда масштабирование DPI дисплея установлено на 100%, PointerInfo полностью неточен. Это кажется абсурдом. Робот отправляет мышь в произвольное место, а PointerInfo даже не может правильно прочитать это местоположение. Если я установлю масштабирование экрана на 125%, то PointerInfo получит то же место на экране, что и NativeMouesListener, но проблема с роботом все еще существует.

Существуют ли какие-либо альтернативы или внешние библиотеки, которые я могу использовать для симуляции щелчков мыши? Невероятно, что единственное, что нам нужно для достижения этой цели, - это нечто такое же, как робот.

Вот видео, объясняющее мою проблему: https://www.youtube.com/watch?v=BerTofDwRUw

1 ответ

Зачем вам вообще нужны внешние библиотеки. Вы можете использовать робота AWT для перемещения мыши и имитации щелчков мыши и нажатий клавиш. https://docs.oracle.com/javase/7/docs/api/java/awt/Robot.html

Другие вопросы по тегам