java - 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 次,并且输出中也没有出现错误。
我试过了;
- 在按键后添加'robot.keyRelease(KeyEvent.VK_A)',
- 允许我想要自动化的软件中的程序类型,
- 允许程序在我正在使用的 IDE 和文本编辑器中输入,
- 允许程序在 IDE 和文本编辑器中单击(所以我可以看到是否只有按键是问题)。
这些都没有产生结果。我检查了来自多个来源(文章和视频)的代码,所有这些都具有相同的代码存根。我读过一些软件会阻止机器人对象在其中键入/单击,但是在我开发以前的项目时,键入和单击都有效。
解决方案
所以我今天醒来,然后……程序运行了。
我仍然不知道为什么它一开始就不起作用,或者问题是如何解决的(魔术?)。运行 sudo 命令似乎没有什么不同,而且我正在处理的软件都没有阻止机器人对象自动键入/单击。
这很可能只是我的问题,因为其他人设法让它工作。既然已经发生过一次,那它很可能会再次发生。
无论如何,感谢所有帮助过的人!如果未来的读者对它为什么不起作用有任何想法,请随时分享。
推荐阅读
- java - 如何将字符串列表中的元素与字符串数组列表进行比较?
- c - 如何使用 CAP_SYS_BOOT 能力?
- python - Beautifulsoup 迭代以获取 sometext 或 url
- javascript - 使用 CSS 样式化 Javascript
- ckeditor5 - 在 change() 中停止操作
- python - Python 备份 Json 文件
- android - 如何在 Android 上以编程方式打开 SwitchPreference
- angular - Angular 6 AOT 编译错误:装饰器中不支持函数调用
- machine-learning - RNN 输出层的梯度应该被剪裁吗?
- angularjs - 谷歌图表打印大小不考虑chartArea