'keypress()'robot对象的方法没有键入任何内容

83qze16e  于 2021-07-07  发布在  Java
关注(0)|答案(1)|浏览(377)

我试图用java编写一个程序,使用robot类自动键入字符串中的每个字符。不久前,我用它制作了一个类似的自动化程序(我称之为“上一个项目”),它使用了“keypress()”。我需要使用的robot类的这个方法和其他大多数方法(如果不是全部的话)都工作得很好。
现在我已经开始了,不管作为参数传递的keyevent是什么,keypress()都没有输入任何内容。我认为我写的代码不正确,所以我运行我以前的项目只是为了确保它工作,但它没有。
下面是我用于上一个项目和当前项目的代码片段(您也可以使用它来测试这个项目)。
编辑:在文本编辑器或任何类似文本字段的功能上尝试。我现在展示了整个演示类。

// 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();
        }
    }
}

“键入的键”被打印30次,输出中也没有出现错误。
我试过了;
在按键后添加“robot.keyrease(keyevent.vk d a)”,
允许在我想自动化的软件中输入程序类型,
允许程序输入我正在使用的ide和文本编辑器,
允许程序在ide和文本编辑器中单击(这样我就可以看到是否只有按键才是问题所在)。
这些都没有产生结果。我检查了来自多个来源(文章和视频)的代码,所有这些来源都有相同的代码存根。我读过一些软件阻止robot对象在其中键入/单击,但是在我开发上一个项目时,键入和单击都起作用。

3pmvbmvn

3pmvbmvn1#

所以我今天醒来。。。这个程序有效。
我仍然不知道为什么它一开始就不起作用,或者这个问题是如何解决的(魔法?)。运行sudo命令似乎没有什么区别,而且我正在处理的软件中没有一个阻止robot对象自动键入/单击。
这很可能只是我的问题,因为其他人设法让它工作。既然已经发生过一次,就很可能再发生一次。
无论如何,感谢所有帮助过我的人!如果未来的读者对它为什么不起作用有任何想法,那么请随意分享。

相关问题