【发布时间】:2015-01-06 14:23:33
【问题描述】:
我必须将击键发送到虚拟机。任务是重复的(我必须每天做 3-4 次),但可以通过发送按键轻松模拟。 实际上,我的虚拟机只有终端窗口(基于 Linux)运行 SSH 会话。
我编写了一个小型 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 启动 VM 时不会运行,虽然我可以通过 SSH 连接到那里,然后我可以运行程序。
我必须选择应该运行它的窗口,这就是为什么我包含 5 秒等待,以便我可以及时选择正确的窗口。我知道这不是很好,但它是一个测试程序。
【问题讨论】:
-
尝试在
keyPress()之后增加延迟 -
已经试过了。没有成功。此外,如果是这样的话,至少会记录第一次击键。
-
当您聚焦远程桌面窗口时,您在哪里执行单击操作:在窗口标题上还是在远程计算机上运行的记事本上?尝试点击记事本,甚至尝试手动输入以确保它确实是焦点。
-
刚才试过了。还是一样。
标签: java ssh virtual-machine hyper-v