1

我正在尝试检测我的电视何时通过 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 事件做出反应,看看设备列表是否增加了。

4

1 回答 1

0

您可以投票GetSystemMetrics(SM_CMONITORS)EnumDisplayMonitors.

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

于 2013-02-22T23:08:16.360 回答