首页 > 解决方案 > Robot 对象的“keyPress()”方法没有输入任何内容

问题描述

我正在尝试用 Java 编写一个程序,该程序使用 Robot 类自动键入字符串中的每个字符。不久前,我用它制作了一个类似的自动化程序(我将其称为“以前的项目”),它使用了“keyPress()”。这个以及大多数(如果不是全部)我需要使用的 Robot 类的其他方法都运行良好。

现在我已经开始了,'keyPress()' 没有输入任何内容,无论我作为参数传递的 KeyEvent 是什么。我以为我写错了代码,所以我运行了我以前的项目只是为了确保它有效,但它没有。

这是我用于上一个项目和我当前项目的代码片段(您也可以使用它来测试它)。

编辑:尝试使用文本编辑器或任何类似于文本字段的功能。我现在展示了整个演示课程。

// demo procedure
public class DemoClass() {
    public static void main(String[] args) {
        new DemoClass().run()
    }

    public void run() {
        try {
            Robot robot = new Robot();
            
            for (int i = 1; i <= 30; i++) {
                robot.keyPress(KeyEvent.VK_A);
                robot.delay(100);

                System.out.println("Typed key");
            }

        } catch (AWTException e) {
            e.printStackTrace();
        }
    }
}

'Typed key' 被打印 30 次,并且输出中也没有出现错误。

我试过了;

这些都没有产生结果。我检查了来自多个来源(文章和视频)的代码,所有这些都具有相同的代码存根。我读过一些软件会阻止机器人对象在其中键入/单击,但是在我开发以前的项目时,键入和单击都有效。

标签: javakeypressawtrobot

解决方案


所以我今天醒来,然后……程序运行了。

我仍然不知道为什么它一开始就不起作用,或者问题是如何解决的(魔术?)。运行 sudo 命令似乎没有什么不同,而且我正在处理的软件都没有阻止机器人对象自动键入/单击。

这很可能只是我的问题,因为其他人设法让它工作。既然已经发生过一次,那它很可能会再次发生。

无论如何,感谢所有帮助过的人!如果未来的读者对它为什么不起作用有任何想法,请随时分享。


推荐阅读