Программно изменить разрешение экрана?
Есть ли способ программно изменить разрешение экрана или включить / отключить несколько мониторов в Windows XP? Например изменить с 1024х768 на одном мониторе на 1280х104 на двух мониторах? Я был бы наиболее заинтересован в функции win32, чтобы сделать это, но все, что можно привязать к ярлыку Windows, будет достаточно.
5 ответов
Вы можете использовать EnumDisplayDevices, чтобы выяснить, какие дисплеи у вас есть, и EnumDisplaySettings, чтобы получить список доступных разрешений для ваших дисплеев. Используйте ChangeDisplaySettings, чтобы установить необходимое разрешение.
Да, но это не часть.NET. Вам нужно будет использовать, вызывать или писать оболочку для доступа к Win32 API.
См. ChangeDisplaySettings и связанные функции.
Здесь вы можете найти базовый пример.
Вы можете легко написать это с 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
Чтобы изменить разрешение основного дисплея:
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 .
Прочитать приведенную ссылку легко.
просто скачать dll хорошо идти..
Screen Srn=Screen.PrimaryScreen;
int tempWidth=Srn.Bounds.Width;
int tempHeight=Srn.Bounds.Height;
Console.WriteLine("Current Screen width is {0} and height is {1}.",
tempWidth,
tempHeight);