Я работаю над устаревшим приложением vb6, которое работает на Windows XP (встроенной), которая использует ChangeDisplaySettingsEx для управления разрешением подключенных мониторов.
Мне было поручено найти способ заставить ChangeDisplaySettingsEx переключаться между клонированным и расширенным режимами, когда установлено более одного монитора.
Когда подключен второй монитор, он автоматически работает в режиме клонирования.
Когда я перечисляю доступные устройства отображения с помощью EnumDisplayDevices, DISPLAY_DEVICE.DeviceString выглядит следующим образом:
\\.\DISPLAY1\Monitor0
\\.\DISPLAY1\Monitor1
Когда мониторы находятся в расширенном режиме, они выглядят следующим образом:
\\.\DISPLAY1\Monitor0
\\.\DISPLAY2\Monitor0
Я неоднократно читал MSDN, и, похоже, нет четкого ответа на вопрос о том, как вы вызываете API для изменения режима с Clone на Extended.
Я предполагал отсоединить второй монитор, а затем попытаться найти способ подключения, поэтому я начал пытаться отсоединить в соответствии с http://msdn.microsoft.com/en-us/library/dd162617(v=vs.85).aspx, но я не могу заставить все это работать.
Всякий раз, когда я пытаюсь выполнить синтаксический анализ \. \ DISPLAY1 \ Monitor1 для ChangeDisplaySettingsEx, я получаю DISP_CHANGE_BADPARAM - например,
ChangeDisplaySettingsEx(\\.\DISPLAY1\Monitor1, DevM, 0, CDS_GLOBAL Or CDS_UPDATEREGISTRY, 0)
Я действительно тяну свои волосы этим.
Кто-нибудь знает, как отключить режим клонирования и включить расширенный режим с помощью API?