从主机shell发送鼠标或触摸事件到VirtualBox虚拟机?

4

我知道如何使用 VBoxManage controlvm keyboardputscancode <scancode> <scancode> <etc...> 发送键盘事件(按键)到 VirtualBox 虚拟机。

是否有类似的方法模拟 鼠标或触摸事件 呢?例如,将鼠标移动到某个坐标或某个距离上,或发送鼠标单击,或发送对给定坐标的触摸/轻击?


VirtualBox论坛上提出了完全相同的问题。 - Benjamin Loison
VirtualBox论坛上有人提出了同样的问题。 - undefined
1个回答

1

您可以使用Python和https://pypi.org/project/vboxapi/来完成此操作。

from vboxapi import VirtualBoxManager

mgr = VirtualBoxManager(None, None)
vbox = mgr.getVirtualBox()
machine = vbox.findMachine('CentOS')
session = mgr.getSessionObject(vbox)
machine.LockMachine(session, mgr.constants.LockType_Shared)
session.Console.Mouse.putMouseEventAbsolute(100,100,0,0,1)

如需更多信息,请查看此处


1
谢谢,看起来很有前途!但是,如果我运行这个例子(当然要将“CentOS”重命名为我的虚拟机名称),我会收到一个错误:AttributeError: XPCOM组件'<unknown>'没有属性'LockMachine'(完整错误消息)。 - RocketNuts
1
非常抱歉,如果这是一个愚蠢的问题,但我该如何安装pip?当我执行brew search pip时,它说pip是Python公式的一部分,但我已经在我的系统上安装了Python(macOS默认自带)。如果我通过brew安装Python,那么其他东西会不会出现问题?或者我最终会有两个Python版本,那么我(或依赖于任一Python版本的程序)如何区分这两个版本? - RocketNuts
哦,情况变得更奇怪了,我找到了手动安装pip的方法,并且它起作用了。然而,现在pip install vboxapi显示“Requirement already satisfied: vboxapi in /Library/Python/2.7/site-packages (1.0)”,所以显然vboxapi已经存在于这里!但是...在尝试脚本后,我仍然遇到了AttributeError:XPCOM组件错误(请参见第一条评论)。也许vboxapi或VirtualBox有不同的不兼容版本? - RocketNuts
我应该在哪里或如何安装它?我尝试了“brew search pywin32”,但是没有找到任何内容。当我在谷歌上搜索时,我只能找到Windows的说明。请注意,我在macOS上。你确定这不仅适用于Windows吗? - RocketNuts
可能是因为我只在Windows上测试过,所以出现了这个问题。但如果你遇到了这个错误,可以尝试删除锁定行并再次运行,看看是否能解决问题。 - EJL
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接