Можно ли определить, активно ли монитор, подключенный к ПК с Windows, отображает определенный вход?
Я разрабатываю приложение для Windows, которое поддерживает удаленные дисплеи через VNC. Обычно удаленные дисплеи будут единственным визуальным интерфейсом. Тем не менее, будут случаи, когда пользователь захочет просмотреть приложение с помощью физического монитора. Если физически подключенный монитор подключен и подключен к определенному входу (это может быть DVI или HDMI), я должен иметь возможность обнаружить это и отключить VNC. Можно ли определить, активно ли подключенный монитор отображает определенный вход?
Я знаю, что могу получить некоторую информацию о подключенных мониторах с Screen.AllScreens
но ничто в этом, кажется, не соответствует тому, что мне нужно. Может быть, есть какой-то метод, предоставляемый Windows API, который может дать мне эту информацию? Можно ли определить необходимую информацию из VESA/DDC?
1 ответ
У меня нет опыта разработки приложений VNC, но, возможно, предложение может привести вас в правильное русло.
Скачать wmiexplorer
- Запустите программу
- Здесь вы можете исследовать различные классы в WMI, который будет самым низким уровнем, я думаю, вы получите
- Перейдите на вкладку "Запрос" и введите запрос:
"select * from Win32_DesktopMonitor"
Я думаю, что это информация, которую вы можете использовать, чтобы выяснить информацию о ваших мониторах. (Я не уверен, какие классы имеют информацию, которая относится к мониторам)
В частности, проверьте доступность для класса Win32_DesktopMonitor.
Обновить
Выполнение этого запроса на удаленном компьютере Description и DeviceID и Name вернулось как "Монитор по умолчанию". На моей реальной машине он вернулся как "Универсальный монитор PnP", а также имел MonitorManufacturer
установить, где в качестве удаленной машины нет. Вы могли бы даже пойти дальше, сравнивая запрашиваемый монитор с Screen
разрешение или, может быть, SystemName
возвращается в запросе по сравнению с системным именем компьютера, на котором запущено приложение.
Используйте ManagementObjectSearcher для выполнения запросов WMI.
редактировать
Вы также можете выполнить сопоставление / перекрестную проверку устройств, как в примере, показанном здесь. Обратите внимание на ClassGUID
то же самое между MonitorDesktop и PnPEntity.