【问题标题】:HDMI Connection Does Not Send WM_DEVICE_ARRIVAL MessageHDMI 连接不发送 WM_DEVICE_ARRIVAL 消息
【发布时间】:2013-02-08 16:14:02
【问题描述】:

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

【问题讨论】:

  • 连接 HDMI 链接后,设备管理器中是否列出了新的显示器?

标签: c++ winapi port hdmi


【解决方案1】:

您可以投票GetSystemMetrics(SM_CMONITORS)EnumDisplayMonitors

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-09
    相关资源
    最近更新 更多