java - 无法使用 JAVA 将击键发送到 hyper-V 上的 VM

标签 java ssh virtual-machine hyper-v

我必须将击键发送到虚拟机。任务是重复性的(我每天必须执行 3-4 次),但可以通过发送击键轻松模拟。 实际上,我的虚拟机只有运行 SSH session 的终端窗口(基于 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);
        }
    }
}

此程序在记事本上成功运行,VM 在 Oracle Virtual Box 中启动通过 SSH session 访问。但它当虚拟机从 hyper-V 启动时不会运行,尽管我可以通过 SSH 连接到该虚拟机,然后就可以运行该程序。

我必须选择应该运行该程序的窗口,这就是为什么我加入了 5 秒等待,以便我可以及时选择正确的窗口。我知道这不是很好,但是,这是一个测试程序。

最佳答案

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

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

我建议下载这个应用程序并尝试一下。如果有效,请检查其代码。否则我很抱歉...

请让我知道进展如何。我很好奇...

关于java - 无法使用 JAVA 将击键发送到 hyper-V 上的 VM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27800687/

相关文章:

Java 将值传递给新对象

java - ECLIPSE E4 - 保存工作区状态

java - Java中的多级SSH登录

groovy - 如何从soapui groovy脚本执行shell脚本?

java - 如何在 Java 中比较字符串?

java - ListView onitemclick

ssh - 允许 CI 访问私有(private) BitBucket 存储库

azure - 如何让相机在 Azure 虚拟机上工作

azure - 无法连接到远程桌面上的 Azure VM RDP

networking - 如何从Windows 10上的容器(Docker for Windows)连接到Docker主机