【问题标题】:Get automatically notified on audio device connection/disconnection?获取有关音频设备连接/断开的自动通知?
【发布时间】:2012-10-05 15:57:44
【问题描述】:

是否可以在用户连接或断开音频设备时自动获得通知?

【问题讨论】:

  • 如果您的意思是拔下/插入基于 USB 的音频设备,那么可以。使用WM_DEVICECHANGE窗口消息。
  • stackoverflow.com/q/861601/10396 可能有一些有用的信息。
  • Jay:我担心,当使用 WM_DEVICECHANGE 时,这可能会排除使用其他接口的音频设备。

标签: delphi audio notifications delphi-xe2 device


【解决方案1】:

在 Vista+ 中,您可以使用 Core Audio IMMNotificationClient interface 获得通知。

IMMNotificationClient 接口提供通知,当 添加或删除音频端点设备,当状态或 端点设备的属性发生变化,或者当 分配给端点设备的默认角色。

处理 WM_DEVICECHANGE 和/或轮询是 odler OS 版本中的解决方案。

【讨论】:

  • 感谢您迄今为止的帮助!有谁知道如何在 Delphi 中实现 IMMNotificationClient 接口,以便在连接或断开音频设备时收到通知?谢谢!
  • MSDN 文章逐步解释了它,据我所知,转换为 Delphi 相当简单。您创建枚举器,注册通知并最终接收它们。
【解决方案2】:

要接收音频设备插拔通知,请按以下步骤操作:

  1. 使用此 msdn 链接从 IMMNotificationClient 接口派生类: http://msdn.microsoft.com/en-us/library/windows/desktop/dd370810%28v=vs.85%29.aspx

  2. 使用此 msdn 链接创建设备枚举对象: http://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/610aacff-062e-4453-8437-01f0de038b07/jack-detection-for-headset

在第二步换行 IMMNotificationClient *pNotify = NULL;

与 IMMNotificationClient *pNotify = new CMMNotificationClient;

通过此实现,您将在 CMMNotificationClient 的重载函数中收到所有插入、拔出通知。

请确保最后删除 CMMNotificationClient :)

【讨论】:

    猜你喜欢
    • 2012-11-14
    • 1970-01-01
    • 1970-01-01
    • 2019-05-08
    • 2017-03-16
    • 1970-01-01
    • 2019-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多