Можно ли определить, активно ли монитор, подключенный к ПК с Windows, отображает определенный вход?

Я разрабатываю приложение для Windows, которое поддерживает удаленные дисплеи через VNC. Обычно удаленные дисплеи будут единственным визуальным интерфейсом. Тем не менее, будут случаи, когда пользователь захочет просмотреть приложение с помощью физического монитора. Если физически подключенный монитор подключен и подключен к определенному входу (это может быть DVI или HDMI), я должен иметь возможность обнаружить это и отключить VNC. Можно ли определить, активно ли подключенный монитор отображает определенный вход?

Я знаю, что могу получить некоторую информацию о подключенных мониторах с Screen.AllScreens но ничто в этом, кажется, не соответствует тому, что мне нужно. Может быть, есть какой-то метод, предоставляемый Windows API, который может дать мне эту информацию? Можно ли определить необходимую информацию из VESA/DDC?

1 ответ

Решение

У меня нет опыта разработки приложений VNC, но, возможно, предложение может привести вас в правильное русло.

Скачать wmiexplorer

  1. Запустите программу
  2. Здесь вы можете исследовать различные классы в WMI, который будет самым низким уровнем, я думаю, вы получите
  3. Перейдите на вкладку "Запрос" и введите запрос: "select * from Win32_DesktopMonitor"

Я думаю, что это информация, которую вы можете использовать, чтобы выяснить информацию о ваших мониторах. (Я не уверен, какие классы имеют информацию, которая относится к мониторам)

В частности, проверьте доступность для класса Win32_DesktopMonitor.

Обновить

Выполнение этого запроса на удаленном компьютере Description и DeviceID и Name вернулось как "Монитор по умолчанию". На моей реальной машине он вернулся как "Универсальный монитор PnP", а также имел MonitorManufacturer установить, где в качестве удаленной машины нет. Вы могли бы даже пойти дальше, сравнивая запрашиваемый монитор с Screen разрешение или, может быть, SystemName возвращается в запросе по сравнению с системным именем компьютера, на котором запущено приложение.

Используйте ManagementObjectSearcher для выполнения запросов WMI.

редактировать

Вы также можете выполнить сопоставление / перекрестную проверку устройств, как в примере, показанном здесь. Обратите внимание на ClassGUID то же самое между MonitorDesktop и PnPEntity.

Другие вопросы по тегам