我必须将击键发送到虚拟机。任务是重复性的(我每天必须执行 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/