Robot.mouseMove вообще не работает в Mac OS X - PullRequest
0 голосов
/ 01 ноября 2018

Я создал Java-файл в IntelliJ IDE с этим кодом

import java.awt.AWTException;
import java.awt.MouseInfo;
import java.awt.Robot;

public class JavaRobotExample {
    public static void main(String[] args) {
        int x = 12,
                y = 300;
        try {
            Robot robot = new Robot();
            robot.mouseMove(x, y);

            int xAct = (int)    MouseInfo.getPointerInfo().getLocation().getX(),
                    yAct = (int) MouseInfo.getPointerInfo().getLocation().getY();

            String sPred = String.format("Predicted mouse location : %, d, %, d", x, y),
                    sAct = String.format("Actual mouse location : %, d, %, d", xAct, yAct);

            System.out.println(sPred);
            System.out.println(sAct);
        } catch (AWTException e) {
            e.printStackTrace();
        }
    }
}

Этот пример прекрасно работает в среде Windows 7, но тот же код в Mac OS 10.14 не перемещает мышь с помощью метода mouseMove (но читает положение с помощью класса MouseInfo).

Также я не получаю никаких исключений, например,

У кого-то раньше была похожая проблема? Есть идеи, как заставить этот код работать в Mac OS?

С наилучшими пожеланиями,

1 Ответ

0 голосов
/ 29 декабря 2018

У меня точно такая же проблема. У меня есть заявление "robot.mouseMove (100, 100);" и мышь не двигается вообще. У меня есть идея для исследования. Я заметил предупреждение или информационный тип сообщения от MacOS, когда я выполнял свой код. Он спрашивал меня о разрешении моей программе управлять экраном, системой или чем-то еще. Я пытался установить флажок «разрешить», но он не позволил мне. Я исследую это еще немного. Я думаю, что это вещь MacOS. Вы (и я) должны сказать MacOS, что наша Java-программа может управлять мышью.

Я думаю, что это решение. , .

В Системных настройках (значок «шестеренка») в разделе «Безопасность и конфиденциальность» перейдите на вкладку «Конфиденциальность» вверху, затем выберите «Доступность» слева. В этом списке перечислены все программы, которые могут «управлять вашим компьютером». Я использую STS, а не IntelliJ. Я вижу STS в списке вместе с BetterSnapTool и KeyCastr. Оба BetterSnapTool и KeyCastr проверяются. СТС не проверяется. И все они недоступны, поэтому я не могу изменить ни одну из проверок. В левом нижнем углу окна есть значок замка. Я нажал на значок, и на экране появилось приглашение с запросом пароля (у меня есть некоторый уровень привилегий sysadmin). Я ввел свой пароль, и теперь мне разрешено «проверять» STS. Я «проверил» STS (вы «проверите» IntelliJ). После «проверки» STS я снова щелкнул значок замка внизу слева. Это «закрытый» замок. Теперь, когда я запускаю свою программу, команда робота двигает мою мышь.

...