2013-02-22 4 views
1

Я пытаюсь обнаружить, когда мой телевизор подключен к ноутбуку через кабель HDMI. Я использую функцию WinAPI RegisterDeviceNotification() для обработки сообщений устройства.Подключение HDMI не отправлено WM_DEVICE_ARRIVAL Сообщение

Когда я подключаю свой телевизор к ноутбуку (через кабель HDMI), я никогда не получаю сообщение WM_DEVICE_ARRIVAL, только 3 события WM_DEVICE_CHANGE. Это нормально?

мне действительно нужно событие WM_DEVICE_ARRIVAL, потому что LPARAM (или WPARAM, я забываю) содержит структуру, которая говорит мне тип подключенного устройства и имя устройства, в то время как, AFAIK, событие WM_DEVICE_CHANGE не содержит эту структуру.

Если его нормальное состояние не получило сообщение WM_DEVICE_ARRIVAL при вставке порта HDMI, какой другой метод я мог использовать для определения имени и типа устройства при его подключении?

Моя единственная идея: перечислить все устройства при запуске приложения, после подключения устройства реагировать на событие WM_DEVICE_CHANGE и посмотреть, увеличился ли список устройств.

+0

Является ли новый монитор, указанный в Диспетчере устройств после подключения HDMI-соединения? –

ответ

0

Вы можете опросить GetSystemMetrics(SM_CMONITORS) или EnumDisplayMonitors.

Сообщение WM_SETTINGCHANGE (обычно) отправлено приложениями и службами, которые меняют системные показатели, в том числе разрешение рабочего стола (которое изменяется, когда HDMI подключен, если рабочий стол расширен, он не предназначен для зеркалирования). Вы можете использовать это, чтобы вызвать вышеупомянутый опрос, вместо того чтобы полагаться исключительно на таймер.