21

有没有办法在 Windows XP 中以编程方式更改屏幕分辨率或启用/禁用多个显示器?例如,将一台显示器的 1024x768 更改为两台显示器的 1280x1024?我对执行此操作的 win32 函数最感兴趣,但任何可以绑定到 Windows 快捷方式的东西就足够了。

4

4 回答 4

31

您可以使用EnumDisplayDevices来确定可用的显示器,并使用EnumDisplaySettings来获取显示器的可用分辨率列表。使用ChangeDisplaySettings设置您需要的分辨率。

于 2008-10-18T19:00:53.370 回答
3

是的,但它不是 .NET 的一部分。您将需要使用、调用或编写包装器来访问 Win32 API。

请参阅ChangeDisplaySettings和相关函数。

在这里您可以找到一个基本示例。

于 2008-10-18T18:57:49.180 回答
0

要更改主显示器的显示分辨率:

import win32api
import win32con
import pywintypes

devmode = pywintypes.DEVMODEType()
devmode.PelsWidth = 1920
devmode.PelsHeight = 1080

devmode.Fields = win32con.DM_PELSWIDTH | win32con.DM_PELSHEIGHT
win32api.ChangeDisplaySettings(devmode, 0)

有关提供不同分辨率选择的 python 脚本,请参阅https://github.com/randyramsaywack/changeResolution

于 2021-06-15T05:22:32.663 回答
-2

您可以使用http://www.autohotkey.com轻松编写脚本

这是一个用于在 Windows+1 和 Windows+2 之间切换一台显示器和两台显示器的脚本

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
#Warn  ; Recommended for catching common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
#1::
Send {LWin}
WinWaitActive Start menu
Send Adjust Screen Resolution
Send {enter}
WinWaitActive Screen Resolution
ControlClick ComboBox3
Send {PgDn}
Send {Up} ; Select "Show desktop only on 1"
Send {enter}
Sleep 3000 ; workaround - cannot select accept/revert window?
Send {left}
Send {enter} ; accept changes
Return
#2::
Send {LWin}
WinWaitActive Start menu
Send Adjust Screen Resolution
Send {enter}
WinWaitActive Screen Resolution
ControlClick ComboBox3
Send {PgDn}
Send {Up}
Send {Up} ; Select "Extend these displays"
Send {enter}
Sleep 3000 ; workaround - cannot select accept/revert window?
Send {left}
Send {enter} ; accept changes
Return
于 2012-03-22T18:27:38.793 回答