【发布时间】:2017-03-13 21:01:39
【问题描述】:
所以我有以下代码:
public static void main(String[] args) throws AWTException, InterruptedException {
Robot robot = new Robot();
robot.setAutoWaitForIdle(true);
robot.setAutoDelay(40);
// This works fine
robot.mouseMove(40, 130);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.delay(200);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
robot.delay(200);
// The 'a' is never inputted
robot.keyPress(KeyEvent.VK_A);
robot.delay(200);
robot.keyRelease(KeyEvent.VK_A);
}
此代码成功将鼠标移动到位置 40、130 并单击。我确保在此位置打开一个文本编辑器,以便它变得专注。
下一段代码是问题所在。 keyPress/Release sn-p 适用于其他代码。 (如 100,对应数字 4。)但由于某种原因,字母“a”不会打印到文本编辑器中。
我尝试让程序不断循环并打印 a 约 5 秒。程序化单击后,它不会在文本编辑器中打印“a”。如果我在这段时间自己再次点击编辑器,'a's 的字符串就会开始出现。
是什么导致了这种行为,我该如何解决?
【问题讨论】:
-
如果您使用不同的
VK_?键事件(即VK_B)运行完全相同的代码,它是否有效?此外,由于 ASCII 码100是小写的d,而不是数字4,因此似乎有些混乱。 -
是的,与 VK_4 完全相同的代码可以正常工作。似乎 VK_B 也不起作用。
-
如果交替发送
VK_4和VK_A,以VK_4开头,会怎样?你得到没有As 的4s 吗?如果你以VK_A开头呢?请花点时间尝试一下。 -
我已经搞砸了很长一段时间,我遇到的所有行为似乎都没有意义。首先,
VK_4后跟VK_A只打印4。我尝试将 65 到 100 作为 keyPress/release 值循环,最后得到oty]0123的输出,显然缺少许多值。我还尝试增加和减少发布之间的延迟而不改变输出。我还尝试了在 InputEvent 中单击其他鼠标 1 并得到相同的结果。双击也一样 -
提供一个明确的列表,列出有效和无效的字符。