Java 使用robot单击并键入Microsoft Word not working

Java 使用robot单击并键入Microsoft Word not working,java,ui-automation,awtrobot,Java,Ui Automation,Awtrobot,我创建了以下代码来执行以下操作: 创建一个新的Word文件并打开它 检查任务管理器,查看它是否打开,然后继续 使用Robot类移动到屏幕中央,然后单击单词application并键入:Y。 除了打字,它什么都做 代码: 当弹出窗口总是在屏幕中间打开时,可以说: Dimension middle = new Dimension(Toolkit.getDefaultToolkit().getScreenSize().getWidth() / 2, Toolkit.getDefaultToolkit(

我创建了以下代码来执行以下操作:

创建一个新的Word文件并打开它 检查任务管理器,查看它是否打开,然后继续 使用Robot类移动到屏幕中央,然后单击单词application并键入:Y。 除了打字,它什么都做

代码:


当弹出窗口总是在屏幕中间打开时,可以说:

Dimension middle = new Dimension(Toolkit.getDefaultToolkit().getScreenSize().getWidth() / 2, Toolkit.getDefaultToolkit().getScreenSize().getHeight() / 2);
返回屏幕中间的EXACT。现在,您必须将光标相对于按钮所在的中间位置移动。要做到这一点,你可以反复尝试,但你也可以设置一个while循环,告诉你按钮在哪里。像这样:

while(true){
    System.out.println(MouseInfo.getPointerInfo().getLocation());
}
现在您知道按钮在屏幕上的位置,但现在您应该使其相对于中间位置,以便在任何大小的屏幕上都能工作。因此,你必须取x和y的差值。现在您知道按钮相对于中间的位置,您可以说:

Robot robot = new Robot();
robot.mouseMove(middle.getWidth() + differenceX, middle.getHeight() + differenceY);
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
请注意,这种方式并不完全安全。如果用户在单击弹出窗口之前移动它,代码将单击其他位置。 但对于其余部分,我相信该代码将在所有监视器上运行。但我还没有测试过。你可能需要让机器人点击两次,一次获得焦点,另一次实际点击。如果你还有任何问题,请毫不犹豫地问他们。 我希望这能起作用。按键代码:

// Robot
    Robot robot = new Robot();

    double x = 0;
    double y = 0;

    x = Toolkit.getDefaultToolkit().getScreenSize().getWidth() / 2;
    y = Toolkit.getDefaultToolkit().getScreenSize().getHeight() / 2;

    int xx = (int) Math.round(x);
    int yy = (int) Math.round(y);

    robot.mouseMove(xx, yy);
    robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
    robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
    robot.keyPress(KeyEvent.VK_Y);
你应该能看到它的去向。
我希望这能起作用:。

好的,我只是在Word中玩弄它,到目前为止它似乎能起作用。谢谢:。哇,这个问题太糟糕了,我不能再问其他问题了。你能不能帮我,虽然这是有关上述问题,这一次我有代码。。。我正在使用Java打开MircoSoft Word,然后使用robot单击,然后出于某种原因键入,单击被接受,但键入不被接受。当我说接受时,我的意思是点击正在注册,输入代码正在进行,但字母没有出现在Word上。我可以把密码发给你。我发现你的问题确实不太被接受。。。但我不同意那些说不清楚我还能如何回答的人?。但我会帮你输入密码。只要窗口有焦点new Robot.keyPressKeyEvent.VK_G,我就可以使用此代码按键;p、 我不能,因为我名声不好,我已经试过了。好的,你发布的代码是我正在使用的,但它不起作用。我不能在这里发布我的代码。我可以发送给你吗?你可以编辑你的问题,或者我可以创建一个新的公共聊天室。你可以选择。
// Robot
    Robot robot = new Robot();

    double x = 0;
    double y = 0;

    x = Toolkit.getDefaultToolkit().getScreenSize().getWidth() / 2;
    y = Toolkit.getDefaultToolkit().getScreenSize().getHeight() / 2;

    int xx = (int) Math.round(x);
    int yy = (int) Math.round(y);

    robot.mouseMove(xx, yy);
    robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
    robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
    robot.keyPress(KeyEvent.VK_Y);