Java Robot MousePress() не работает в диспетчере задач Windows
Проблема:
MousePress() Java Robot хорошо работает в 99% случаев, но он не работает в диспетчере задач Windows 8.1 или 10 (я не тестировал 7 или ниже).
На самом деле, когда окно диспетчера задач выбрано, даже MouseMove () не будет работать.
Копировать:
- Используйте код ниже, запустите его один раз, чтобы увидеть, что код работает.
- Откройте диспетчер задач (CTRL+Shift+Escape), запустите код, затем быстро выберите окно диспетчера задач. Код будет завершен, но положение мыши не изменится.
Код:
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.MouseEvent;
public class RobotMousePressTest {
public static void main(String[] args) throws AWTException, InterruptedException {
System.out.println("Started. Waiting for sleep to finish.");
Robot r = new Robot();
Thread.sleep(3000);
r.mouseMove(4, 4);
r.mousePress(MouseEvent.getMaskForButton(MouseEvent.BUTTON1));
System.out.println("Click!");
}
}
Вопросы:
- Кто-нибудь знает, есть ли способ заставить его работать в любом случае?
- Есть ли альтернативная библиотека, которую я могу использовать для MousePress() и MouseMove()?
- Буду ли я вынужден использовать собственный код (JNI) для правильной работы?
1 ответ
После еще нескольких копаний и тестирования я обнаружил, что это связано с администратором Windows. Любое приложение, которое не имеет прав администратора, не может взаимодействовать с приложениями, которые имеют права администратора. Если я запускаю приложение от имени администратора, код выполняется правильно, даже с выбранным диспетчером задач.
До сих пор я не нашел другого способа, чтобы это сработало.