Я пытаюсь определить, когда кабель HDMI подключен (или удален) к ноутбуку или настольному компьютеру под управлением Windows 7 или выше.
я звонил RegisterDeviceNotification
из WinAPI и установите следующее:
DEV_BROADCAST_DEVICEINTERFACE filter;
memset(&filter, 0, sizeof(filter));
filter.dbcc_size = sizeof(DEV_BROADCAST_DEVICEINTERFACE);
filter.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
filter.dbcc_classguid = GUID_DEVINTERFACE_MONITOR; //Detect new monitor/tv..
hNotify = RegisterDeviceNotification(window, &filter, DEVICE_NOTIFY_WINDOW_HANDLE);
Оно работает. Я получаю уведомления следующим образом:
case WM_DEVICECHANGE:
{
DEV_BROADCAST_DEVICEINTERFACE* info = (DEV_BROADCAST_DEVICEINTERFACE*) lParam;
switch(wParam)
{
case DBT_DEVICEARRIVAL:
MessageBox(NULL, info->dbcc_name, "Attached", 0);
break;
case DBT_DEVICEREMOVECOMPLETE:
MessageBox(NULL, info->dbcc_name, "Detached", 0);
break;
default:
break;
}
}
break;
И это прекрасно работает. Это печатает:
\\?\DISPLAY#SNY9C01#4&323d76f&0&UID50725632#{e6f07b5f-ee97-4a90-b076-33f57bf4eaa7}
Однако я не могу определить, является ли это портом HDMI или другим портом. Все, что я знаю, это то, что это дисплей, который подключен «где-то». Любая идея, как я могу определить, с какого порта пришло событие?
Есть идеи?
Задача ещё не решена.