Мне нужно изменить разрешение экрана, используя мое приложение.
Как сделать:
- Прочитать текущее разрешение
- Изменение его с помощью моего приложения, а затем возврат к текущему при выходе.
Спасибо, Фуркан
Мне нужно изменить разрешение экрана, используя мое приложение.
Как сделать:
Спасибо, Фуркан
1) Как читать текущее разрешение экрана?
Получение текущего разрешения экрана легко и встроено в рамки без необходимости вникать в нечто вроде API GetSystemMetrics
. Класс Screen
содержит информацию обо всех устройствах отображения, подключенных к системе. Чтобы определить разрешение основного монитора, вы можете использовать что-то вроде:
Dim screenWidth as Integer = Screen.PrimaryScreen.Bounds.Width
Dim screenHeight as Integer = Screen.PrimaryScreen.Bounds.Height
Чтобы работать с несколькими мониторами, просмотрите свойство Screen.AllScreens
, которое возвращает массив объектов Screen
, соответствующих каждому из дисплеев, прикрепленных к системе. Затем вы можете определить (используя приведенный выше код) разрешение каждого из дисплеев, подключенных к компьютеру, путем прокрутки массива объектов Screen
.
2) Как изменить текущее разрешение экрана из моего приложения VB.NET?
Изменение разрешения экрана немного сложнее. Прежде чем идти дальше, я предупреждаю вас, что приложение, настраивающее разрешение экрана пользователя, неожиданно и потенциально создает враждебную пользовательскую среду. Я знаю, что я не буду использовать приложение, которое менял бы разрешение экрана без разрешения, и я долго и долго думал бы об использовании того, что требовало от меня вообще этого. Если вы пытаетесь сделать заставку, возможно, вам будет лучше и проще делать то, что вы хотите. При этом это можно сделать из VB.NET, если вы хотите P/вызывать несколько функций из Windows API.
Самый простой способ, если вас беспокоит только один монитор, - это использовать функцию ChangeDisplaySettings
, которая позволяет вам укажите графический режим отображения по умолчанию (только для основного монитора пользователя).
Чтобы обрабатывать случай с несколькими мониторами, вам необходимо использовать функцию EnumDisplayDevices
для получения информации обо всех устройствах отображения подключен к компьютеру, и ChangeDisplaySettingsEx
для изменения определенного экрана.
Откажитесь от pinvoke.net, чтобы объявить подписи вызовов Windows API в VB.NET. В результате поиска Google появился этот поток, хотя я не проверил пример кода, который они предоставляют.
Чтобы изменить разрешение экрана только во время работы вашего приложения, а затем восстановить его, когда пользователь покинет вашу программу, вы хотите сохранить текущие настройки экрана перед их изменением, а затем восстановить их (используя те же вызовы метода), когда ваше приложение завершает работу.
Как получить текущее разрешение экрана
Public Function ScreenResolution() As String
Dim intX As Integer = Screen.PrimaryScreen.Bounds.Width
Dim intY As Integer = Screen.PrimaryScreen.Bounds.Height
Return intX & " × " & intY
End Function
Как изменить текущее разрешение экрана - решение
Но адаптация элементов управления к текущему разрешению экрана является целью программиста. Почему это изменит разрешение экрана хоста?