Autotypers(pyautogui,java.awt.robot)无法在Oracle VM VirtualBox

时间:2017-11-03 04:48:06

标签: java virtual-machine ubuntu-14.04 virtualbox pyautogui

我正在尝试通过自动键入正在运行的Oracle VM VirtualBox来恢复root密码。我已经尝试使用Java.awt.robot和pyautogui来完成任务。

他们都能成功点击VM,他们都可以在我的实际计算机上输入word文档,但VM没有解释任何键击(这是我的问题发生的地方)。 p>

我现在关闭了自动捕获键盘,但仍无效。

Python版本:

import pyautogui

# location of where I am putting the console
pyautogui.moveTo(589, 973)
pyautogui.click()
pyautogui.typewrite('Hello, world')
pyautogui.press('enter')

Java版:

import java.awt.Robot;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;

public class Main {

    public static void main(String[] args) throws Exception {
        Robot robot = new Robot();
        // location of where I am putting the console
        robot.mouseMove(589, 973);
        robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
        robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);

        // testing to see if the enter key will work
        robot.keyPress(KeyEvent.VK_ENTER);
        robot.keyRelease(KeyEvent.VK_ENTER);
    }
}

两个版本都会单击VM,但不会在其中键入任何内容,也不会按Enter键 Oracle VM Ubuntu recovery mode

这是尝试输入虚拟机的愚蠢方式吗?是否有更简单的方法向VM发送输入和击键?如果输入不能输入VM,我做错了什么?

(我不打算只按Control-D来绕过密码。)

在本地文档上处理的简短视频,但不在VM上:https://www.youtube.com/watch?v=sM9dVjzzEbI&feature=youtu.be

1 个答案:

答案 0 :(得分:0)

我使用Ubuntu作为主机,Java版本运行正常。它可以在LibreOffice中传输焦点并输入内容。我还在Thread.sleep(100);方法之前添加了keyPress

我正在使用安装了扩展包的VirtualBox 5.2版。两台机器都运行Ubuntu 16.04。该问题可能与Windows主机有关。