Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java机器人-问题类型';a';在mac上_Java_Macos_Awtrobot - Fatal编程技术网

Java机器人-问题类型';a';在mac上

Java机器人-问题类型';a';在mac上,java,macos,awtrobot,Java,Macos,Awtrobot,因此,我有以下代码: 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); ro

因此,我有以下代码:

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代码段对于其他代码非常有效。(如100,对应于数字4。)但由于某种原因,字母“a”不会打印到文本编辑器中

我已经试着让程序连续循环并打印一个约5秒钟。程序单击后,它将不会在文本编辑器中打印“a”。如果在此期间我自己再次单击编辑器,则“a”字符串将开始出现


是什么导致了这种行为?我如何修复它?

正如我在评论中所假设的那样,我认为您在正确聚焦编辑器时遇到了问题。 您可以通过执行
ALT
+
TAB
尝试使用Windows解决方案,然后释放它以选择编辑器

Robot robot = new Robot();

robot.setAutoWaitForIdle(true);
robot.setAutoDelay(40);

robot.keyPress(KeyEvent.VK_ALT);//on mac use VK_META
robot.keyPress(KeyEvent.VK_TAB);
robot.keyRelease(KeyEvent.VK_ALT);//on mac use VK_META
robot.keyRelease(KeyEvent.VK_TAB);

robot.keyPress(KeyEvent.VK_A);
robot.delay(200);
robot.keyRelease(KeyEvent.VK_A);

如果使用不同的
VK\u?
键事件(即
VK\u B
)运行完全相同的代码,它是否工作?此外,由于ASCII代码
100
是小写
d
,而不是数字
4
,因此似乎存在一些混淆。是的,与VK_4完全相同的代码可以正常工作。不过,似乎VK_B也不起作用。如果您交替发送
VK_4
VK_A
,从
VK_4
开始,该怎么办?您是否在没有
A
s的情况下获得
4
s?如果你从
VK_A
开始,怎么样?请花点精力来尝试一下。我已经在这方面胡闹了很长一段时间,我遇到的所有行为似乎都没有意义。首先,
VK_4
然后是
VK_A
仅打印
4
。我尝试将65到100循环作为按键/释放值,结果是
oty]0123
的输出明显缺少很多值。我还尝试在不改变输出的情况下增加和减少发布之间的延迟。我还尝试了在InputEvent中单击其他鼠标1次,得到了相同的结果。双击也是一样的。提供一个明确的字符列表,列出可用字符和不可用字符。这似乎就是问题所在。我不得不将macalt+tab的
VK\u-ALT
更改为
VK\u-META
。不确定为什么
BUTTON1\u MASK
BUTTON1\u DOWN\u MASK
选择的窗口不正确。我相信这个问题可能与它运行在intellij运行区域有关。不过我不确定。