Java.awt.Robot keyPress和keyRelease根本不工作

问题描述 投票:0回答:2

每当我尝试使用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);
    }
}

这是我发现的教科书示例,但它仍然提供该错误消息。我一直在寻找找出错误的方法。我在MacBook Pro上使用MacOS Mojave 10.14.2,并且我已经使用Eclipse(我用来编译代码)隐私访问。以下是我用于此的所有内容的屏幕截图:My code

还有其他人有这个问题吗?我还应该注意,错误消息会多次发送,即使它只按一次键。

java awt robot
2个回答
2
投票

请按照以下步骤操作,

  1. 设置 - >安全和隐私
  2. 向下滚动到“辅助功能”
  3. 单击底部的锁定按钮并解锁安全和隐私首选项
  4. 单击“+”图标和您的程序(在我的情况下为Eclipse IDE)并再次尝试运行

Eclipse IDE仍然显示“这是不允许的。请在主线程中调用TIS / TSM !!!”但键盘和鼠标事件都有效。


0
投票

此消息由MacOS中的Main Thread Checker生成。在此检查中应排除Robot按键背景等活动。您可以禁用此检查并验证其是否有效。

在以下问题中阅读更多相关信息,

© www.soinside.com 2019 - 2024. All rights reserved.