Java.awt.Robot keyPress и keyRelease вообще не работают - PullRequest
0 голосов
/ 23 декабря 2018

Всякий раз, когда я пытаюсь использовать java.awt.Robot keyPress или keyRelease, выдается сообщение об ошибке pid(25807)/euid(501) is calling TIS/TSM in non-main thread environment, ERROR : This is NOT allowed. Please call TIS/TSM in main thread!!!.Независимо от того, насколько просто я делаю код, он выдает это сообщение об ошибке.Это мой код:

package com;
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;

public class JavaRobotExample {
    public static void main(String[] args) throws AWTException {
        Robot robot = new Robot();

        robot.keyPress(KeyEvent.VK_A);
        robot.keyRelease(KeyEvent.VK_A);
    }
}

Это пример учебника, который я нашел, но он все равно выдает это сообщение об ошибке.Я так долго искал, пытаясь понять, что не так.Я использую MacOS Mojave 10.14.2 на MacBook Pro и предоставил Eclipse (то, что я использую для компиляции кода) доступ к конфиденциальности.Вот скриншот всего, что я использую для этого: Мой код

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

Ответы [ 2 ]

0 голосов
/ 03 марта 2019

Выполните следующие действия:

  1. Настройки -> Безопасность и конфиденциальность
  2. Прокрутите вниз до «Доступность»
  3. Нажмите кнопку блокировки внизу и разблокируйтенастройки безопасности и конфиденциальности
  4. Нажмите значок «+» и свою программу (Eclipse IDE в моем случае) и попробуйте запустить снова

Eclipse IDE по-прежнему показывает «Это НЕ разрешено»Пожалуйста, позвоните TIS / TSM в основной теме !!! "но события Keyboard и Mouse работают.

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

Это сообщение генерируется Main Thread Checker в MacOS.Такие действия, как Robot нажатие клавиши в фоновом режиме, должны быть исключены из этой проверки.Вы можете отключить эту проверку и проверить, работает ли она.

Подробнее об этом в следующем вопросе,

...