Python 修改虚拟机显示分辨率

3 投票
3 回答
2237 浏览
提问于 2025-04-15 13:57

在VirtualBox中,屏幕分辨率可以设置成任何值,甚至是一些奇怪的,比如993x451等等。我尝试用pywin32来改变它,但没有成功:

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

结果是:

DISP_CHANGE_BADMODE

有没有人能帮帮我?

3 个回答

0

你有没有把VirtualBox设置成自动调整客户端窗口?这样可能会引发一些问题。

1

你有没有把虚拟机设置好,让它能把这个模式告诉操作系统呢?

补充一下:如果你改变窗口的大小,VirtualBox会自动调整新的分辨率。我记得你可以从主操作系统设置视频模式的提示(可以查查文档),但前提是你得安装“增强功能”。如果你使用的是备用的VESA驱动程序,还可以添加VESA模式。总之,这一切似乎都得在主操作系统上进行,才能让客操作系统使用这些设置。而且,看起来没有简单的方法(可能不是命令行的,也可能不持久)来配置这些,具体情况可能因人而异。

我还没测试过,但这个命令应该是: VBoxManage controlvm

你还可以设置客操作系统的最大屏幕大小,我在深入研究时发现了这个: VBoxManage setextradata global GUI/MaxGuestResolution xres,yres

希望这对你有帮助。

0

我找到的解决办法是先在虚拟机的操作系统里开启自动调整客户端大小的功能。然后在主机的操作系统中,通过编程的方式来调整虚拟机窗口的大小。这样做就会导致屏幕分辨率发生变化。

撰写回答