HDMI连接不发送WM_DEVICE_ARRIVAL消息

HDMI Connection Does Not Send WM_DEVICE_ARRIVAL Message

本文关键字:DEVICE ARRIVAL 消息 WM 连接 HDMI      更新时间:2023-10-16

我正试图检测我的电视何时通过HDMI电缆连接到笔记本电脑。我正在使用WinAPI函数RegisterDeviceNotification()来处理设备消息。

当我将电视连接到笔记本电脑(通过HDMI电缆)时,我从未收到WM_DEVICE_ARRIVAL消息,只有3个WM_DEVICE_CHANGE事件这正常吗

我真的需要WM_DEVICE_ARRIVAL事件,因为lParam(或wParam,我忘了)包含一个结构,该结构"告诉"我连接的设备类型和设备名称,而实际上,WM_DEVICE_CHANGE事件不包含此结构。

如果在插入HDMI端口时不接收WM_DEVICE_ARRIVAL消息是正常的,在连接时,我可以使用什么其他方法来确定设备名称和类型

我唯一的想法是:在应用程序启动时列出所有设备,在设备连接时对WM_device_CHANGE事件做出反应,并查看设备列表是否增加。

您可以轮询GetSystemMetrics(SM_CMONITORS)EnumDisplayMonitors

WM_SETTINGCHANGE消息(通常)由改变系统指标的应用程序和服务发送,包括桌面分辨率(如果扩展桌面,则在插入HDMI时会发生变化,而不是镜像)。您可以使用它来触发上述轮询,而不是仅仅依赖于计时器。