无法使用 JAVA 将击键发送到 hyper-V 上的虚拟机

Cannot send keystrokes to VM on hyper-V using JAVA

我必须将击键发送到虚拟机。任务是重复的(我每天必须做 3-4 次),但可以通过发送击键轻松模拟。 实际上我的虚拟机只有运行 SSH 会话的终端 window(基于 Linux)。

我写了一个小的 java 测试程序来发送击键。

public class TestRobot1 {

    static int keyInput[] = {
        KeyEvent.VK_H, KeyEvent.VK_E,
        KeyEvent.VK_L, KeyEvent.VK_L,
        KeyEvent.VK_O, KeyEvent.VK_ENTER,
    };

    public static void main(String[] args) throws InterruptedException, AWTException {
        Thread.sleep(5000);
        Robot robot =  new Robot();
        for(int i = 0; i < keyInput.length; i++){
             robot.keyPress(keyInput[i]);
             robot.delay(10);
             robot.keyRelease(keyInput[i]);
             robot.delay(10);
        }
    }
}

此程序在 Notepad 上成功运行,VM 在 Oracle Virtual Box 中启动,并通过 SSH 会话访问。但是当 VM 从 hyper-V 启动时它不运行,尽管我可以通过 SSH 连接到它,然后我可以运行程序。

我必须 select window,这应该在其上运行,这就是我等待 5 秒的原因,这样我就可以 select时间更正window。我知道这不是很好,但它是一个测试程序。

我没有使用过 hiper-v,但我使用过常规的远程桌面。然而,我使用机器人本身执行了点击,使焦点集中在 window 上。试试这个技巧。作为参考,请查看 https://github.com/alexradzin/TypeToPaste

这是 TypeToPaste 网站:https://sites.google.com/site/typetopaste/

我建议下载此应用程序并试用。如果有效,请检查其代码。否则对不起...

无论如何请告诉我进展如何。我很好奇...