Можете ли вы использовать ChangeDisplaySettingsEx с несколькими мониторами для переключения между клоном и расширенным рабочим столом - PullRequest
5 голосов
/ 20 ноября 2011

Я работаю над устаревшим приложением 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...