以编程方式更改屏幕分辨率?

23
有没有一种以编程方式在 Windows XP 中更改屏幕分辨率或启用/禁用多个显示器的方法?例如,从一个显示器的 1024x768 更改为两个显示器的 1280x1024?我最感兴趣的是一个可以使用 win32 函数完成此操作的方法,但任何可以绑定到 Windows 快捷方式的东西都可以。

8
我相信你不会在未经用户许可的情况下这么做。如果你调整了我的屏幕分辨率,我会非常生气,并且可能不会再使用你的程序。 - Jonathan Leffler
我完全赞同之前评论者的看法。除非这是一种管理PowerPoint演示文稿的实用工具,否则很难想象这是一个有用功能的应用程序。 - David L Morris
那是“我完全同意...” - David L Morris
8
我想为自己做这件事——作为远程登录系统时的便利。 - jacobsee
1
这正是我寻找它的确切原因。 - Juan
4个回答

33

2
我发现了一个使用C#实现这些API的很棒的工作实现。很容易为它创建一个快捷方式。如果你不想在改变分辨率后运行程序,只需删除作者包含的几行代码即可。在我的情况下,我用它将我的4k屏幕分辨率降低到1920x1080,然后在WebEx上分享我的屏幕。完成后,我有一个不同的快捷方式来重置回最大分辨率。 - Bill

3

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

请参见 ChangeDisplaySettings 和相关函数。

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


1
这个问题不是关于.NET的。 - bbigras

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


-3

你可以使用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

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