Обнаружение всех подключенных мониторов с использованием Windows API

Я использую Windows 7. Когда я подключаю новый монитор, когда компьютер работает, монитор автоматически не обнаруживается. Я должен перейти к экрану Display- > Screen Resolution и нажать кнопку Detect, чтобы обнаружить монитор с конфигурацией реестра.

Я ищу способ сделать то же самое программно, используя Windows API. Поэтому я хотел бы написать программу, которая обнаруживает все подключенные мониторы, воспроизводящие кнопку Detect. Я пробовал использовать ChangeDisplaySettingEx, но с плохими результатами. Любые предложения?

Ответ 1

Не решение API, но вы можете использовать утилиту MS DevCon в командной строке для сканирования нового оборудования.

https://support.microsoft.com/en-us/kb/311272

Загрузите его с этой страницы, а затем просто выполните это из окна cmd:

devcon.exe rescan

Вы можете легко создать файл .bat или .cmd для запуска этого из ссылки.

Ответ 2

Не действительно WinApi, но попробуйте эту утилиту:

C:\Windows\System32\DisplaySwitch.exe

DisplaySwitch.exe /internal - Switch to Primary only
DisplaySwitch.exe /external - Switch to Secondary only
DisplaySwitch.exe /clone - Clone desktop on both screens (Not HDCP compliant!)
DisplaySwitch.exe /extend - Extend desktop to both screens

В частности, try/extend switch, он должен выполнять обнаружение внутри.

Ответ 3

Вы должны прочитать this, если хотите узнать о приложениях с поддержкой отображения.