Программно изменить разрешение экрана?
-
03-07-2019 - |
Вопрос
Есть ли способ программно изменить разрешение экрана или включить / отключить несколько мониторов в Windows XP? Например изменить с 1024х768 на одном мониторе на 1280х104 на двух мониторах? Я бы больше всего заинтересовался функцией win32, чтобы сделать это, но все, что можно привязать к ярлыку Windows, было бы достаточно.
Решение
Вы можете использовать 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
Прочитать данную ссылку легко. Р>
просто скачайте 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);