我正试图检测我的电视何时通过HDMI线连接到笔记本电脑。我正在使用WinAPI函数RegisterDeviceNotification()
来处理设备消息。
当我将电视连接到笔记本电脑(通过HDMI线)时,我从未收到WM_DEVICE_ARRIVAL消息,只有3个WM_DEVICE_CHANGE事件。 这是正常的吗?
我真的需要WM_DEVICE_ARRIVAL事件,因为lParam(或wParam,我忘了)包含一个告诉我连接设备类型和设备名称的结构,而afaik,WM_DEVICE_CHANGE事件不包含这种结构。
如果在插入HDMI端口时没有接收到WM_DEVICE_ARRIVAL消息的正常情况,我可以使用哪种其他方法来确定连接后的设备名称和类型?
我唯一的想法是:在应用程序启动时列出所有设备,在设备连接响应WM_DEVICE_CHANGE事件并查看设备列表是否增加。
答案 0 :(得分:0)
您可以轮询GetSystemMetrics(SM_CMONITORS)
或EnumDisplayMonitors
。
WM_SETTINGCHANGE
消息(通常)由更改系统指标的应用程序和服务发送,包括桌面分辨率(如果桌面扩展,则插入HDMI时会发生变化,而不会进行镜像)。您可以使用它来触发上述轮询,而不是仅仅依赖于计时器。