Java Robot MousePress() не работает в диспетчере задач Windows

Проблема:

MousePress() Java Robot хорошо работает в 99% случаев, но он не работает в диспетчере задач Windows 8.1 или 10 (я не тестировал 7 или ниже).

На самом деле, когда окно диспетчера задач выбрано, даже MouseMove () не будет работать.

Копировать:

  1. Используйте код ниже, запустите его один раз, чтобы увидеть, что код работает.
  2. Откройте диспетчер задач (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!");
    }
}


Вопросы:

  1. Кто-нибудь знает, есть ли способ заставить его работать в любом случае?
  2. Есть ли альтернативная библиотека, которую я могу использовать для MousePress() и MouseMove()?
  3. Буду ли я вынужден использовать собственный код (JNI) для правильной работы?

1 ответ

После еще нескольких копаний и тестирования я обнаружил, что это связано с администратором Windows. Любое приложение, которое не имеет прав администратора, не может взаимодействовать с приложениями, которые имеют права администратора. Если я запускаю приложение от имени администратора, код выполняется правильно, даже с выбранным диспетчером задач.

До сих пор я не нашел другого способа, чтобы это сработало.

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