Declare Function ChangeDisplaySettings Lib "user32.dll" Alias "ChangeDisplaySettingsA" (lpDevMode As Any, ByVal dwFlags As Long) As Long
ChangeDisplaySettings изменяет текущие параметры настройки экрана. Эта функция может менять текущее разрешение экрана и разрядность цвета. Как правило, следует вызвать функцию EnumDisplaySettings, чтобы получить возможные параметры экрана.
Функция возвращает следующие значения:
Значение | Описание |
---|---|
DISP_CHANGE_SUCCESSFUL = 0 | Параметры настройки экрана были успешно изменены |
DISP_CHANGE_RESTART = 1 | Компьютер нужно перезагрузить, чтобы изменения вступили в силу |
DISP_CHANGE_BADFLAGS = -4 | Определен недействительный набор флажков |
DISP_CHANGE_BADPARAM = -5 | Определен недопустимый параметр |
DISP_CHANGE_FAILED = -1 | Драйвер дисплея не поддерживает указанный графический режим |
DISP_CHANGE_BADMODE = -2 | Указанный графический режим не поддерживается |
DISP_CHANGE_NOTUPDATED = -3 | Windows NT/2000: Настройки не могут быть записаны в реестр |
' Меняем текущее разрешение экрана ' на 640*480 и сохраняем установки в реестре. ' Тестируем, поддерживает ли видеоадаптер новое ' разрешение. Если необходима перезагрузка, ' то информируем пользователя. Установите на форме ' кнопку Command1 Dim dm As DEVMODE ' настройки экрана Dim retval As Long ' возвращаемое значение ' Инициализируем структуру dm.dmSize = Len(dm) ' Получаем текущие настройки экрана retval = EnumDisplaySettings(vbNullString, ENUM_CURRENT_SETTINGS, dm) ' Меняем разрешение на 640*480 dm.dmPelsWidth = 640 dm.dmPelsHeight = 480 ' Проверяем,возможно ли это retval = ChangeDisplaySettings(dm, CDS_TEST) If retval <> DISP_CHANGE_SUCCESSFUL Then Debug.Print "Нельзя устанавливать такое разрешение!" Else ' Меняем и сохраняем новые параметры retval = ChangeDisplaySettings(dm, CDS_UPDATEREGISTRY) Select Case retval Case DISP_CHANGE_SUCCESSFUL Debug.Print "Новое разрешение установлено!" Case DISP_CHANGE_RESTART Debug.Print "Необходима перезагрузка, чтобы изменения вступили в силу" Case Else Debug.Print "Не могу изменить настройки!" End Select End If