Python更改屏幕分辨率虚拟机

Python更改屏幕分辨率虚拟机,python,winapi,virtualization,resolution,pywin32,Python,Winapi,Virtualization,Resolution,Pywin32,在virtualbox中,屏幕分辨率可以是任何东西,甚至是993x451等奇怪的东西。我尝试使用pywin32更改它,但失败了: >>> dm = win32api.EnumDisplaySettings(None, 0) >>> dm.PelsHeight = 451 >>> dm.PelsWidth = 950 >>> win32api.ChangeDisplaySettings(dm, 0) -2L 结果是: DIS

在virtualbox中,屏幕分辨率可以是任何东西,甚至是993x451等奇怪的东西。我尝试使用pywin32更改它,但失败了:

>>> dm = win32api.EnumDisplaySettings(None, 0)
>>> dm.PelsHeight = 451
>>> dm.PelsWidth = 950
>>> win32api.ChangeDisplaySettings(dm, 0)
-2L
结果是:

DISP_CHANGE_BADMODE

有什么帮助吗?

您是否已将VirtualBox设置为自动设置客户端窗口?这可能会导致一些问题。

您是否已将虚拟机配置为实际向操作系统播发此模式

编辑:如果更改窗口的大小,VirtualBox会自动设置新的分辨率。我相信,您可以从主机操作系统设置视频模式提示(在文档中查找),但您需要安装来宾添加。您还可以在使用回退VESA驱动程序时添加VESA模式。无论哪种方式,这一切似乎都需要从主机操作系统发生,以便来宾操作系统能够利用它。而且看起来没有一种简单的(非cmdline,可能不是持久的)配置方法,尽管如此

我还没有测试它,但是命令应该是: vboxmanagecontrolvm

您还可以设置来宾操作系统的最大屏幕大小,在深入研究时发现: VBoxManage setextradata全局GUI/MaxGuestResolution xres,yres


HTH

我发现这样做的方法是从来宾操作系统启用自动调整客户端大小。然后,在主机操作系统中,通过编程调整VM窗口的大小。这将导致分辨率改变。

否-您知道我将如何做吗?