Java:使用机器人类按ENTER键不起作用

r.keyPress(KeyEvent.VK_ENTER);
r.keyRelease(KeyEvent.VK_ENTER);

由于某种原因,它不起作用。当我手动单击ENTER时,它确实起作用。如何解决这个问题?

需要手动按下某些对话框时?由于在发生此问题之前会出现一些对话框,因此使用机械手单击ENTER可以正常工作。那么,似乎是一个特殊的对话框?

是否有“特殊对话框”? 如果是,如何自动回车然后单击这些?

在Windows 7和10上。

编辑:

整个代码如下。

Robot r = new Robot();

            r.keyPress(KeyEvent.VK_SHIFT);
            r.keyPress(KeyEvent.VK_F10);
            r.keyRelease(KeyEvent.VK_F10);
            r.keyRelease(KeyEvent.VK_SHIFT);

            r.keyPress(KeyEvent.VK_DOWN);
            r.keyRelease(KeyEvent.VK_DOWN);
            r.keyPress(KeyEvent.VK_DOWN);
            r.keyRelease(KeyEvent.VK_DOWN);
            r.keyPress(KeyEvent.VK_DOWN);
            r.keyRelease(KeyEvent.VK_DOWN);

            r.keyPress(KeyEvent.VK_ENTER);
            r.keyRelease(KeyEvent.VK_ENTER);
            // ABOVE ENTER WORKS FINE! THEN A NEW WINDOW IS OPENED

            // HERE IT STOPS WORKING!
            r.keyPress(KeyEvent.VK_ENTER);
            r.keyRelease(KeyEvent.VK_ENTER);

            r.keyPress(KeyEvent.VK_ENTER);
            r.keyRelease(KeyEvent.VK_ENTER);

            r.keyPress(KeyEvent.VK_ENTER);
            r.keyRelease(KeyEvent.VK_ENTER);

            r.keyPress(KeyEvent.VK_DOWN);
            r.keyRelease(KeyEvent.VK_DOWN);

在我放置命令的位置,它停止工作。

在该命令之前,将打开一个新窗口。现在,也许下一个ENTER不再被认可是因为没有重点?

但是,我不这么认为。因为当我手动单击ENTER(不单击其他任何东西或移动鼠标)时,它确实起作用。因此,显然重点就在那里。

评论
  • 环嘉玉
    环嘉玉 回复

    From the Java Tutorial: "For a key press to affect a component, the component must have the keyboard focus".

    将焦点设置在您希望检测keyPress事件的组件上,如下所示:

    component.requestFocusInWindow();
    

    对于您的情况,您可能需要检测开窗事件,然后设置焦点。