在 Windows XP/7/8 中获取有关音频设备启用/禁用通知的方法

Posted

技术标签:

【中文标题】在 Windows XP/7/8 中获取有关音频设备启用/禁用通知的方法【英文标题】:Way to get notification about audio device enable/disable in Windows XP/7/8 【发布时间】:2012-10-18 20:32:16 【问题描述】:

当音频设备被启用或禁用时,Windows API 中是否有通知方式?

我有 RegisterDeviceNotification() 和 WM_DEVICECHANGE 的源代码;它跟踪 USB 设备插入/移除良好。但它不会跟踪笔记本电脑的内部音频设备的启用或禁用。

当然我可以制作计时器并使用waveInGetNumDevs/waveOutGetNumDevs。 但是找到强制操作系统发送通知的方法更有趣:)

谢谢你:)

【问题讨论】:

您可能通过音频控制而不是设备管理器启用/禁用音频设备。它们是不同的。 是的。如果我在设备管理器中禁用音频,我会收到通知... 【参考方案1】:

waveIn/waveOut 是您没有通知的旧版 API。是的,当然,正如您所提到的,您可以使用计时器进行轮询。在 Vista+ 中,较新的 API 确实通过 IMMNotificationClient interface 收到通知,另请参阅此相关答案:Get automatically notified on audio device connection/disconnection?

【讨论】:

以上是关于在 Windows XP/7/8 中获取有关音频设备启用/禁用通知的方法的主要内容,如果未能解决你的问题,请参考以下文章

适用于 Windows XP、7、8 应用程序的 USB 麦克风描述符

无需单独安装或更新即可与 Windows xp、7、8 一起使用的最佳 .net 框架版本

Unix 音频系统 API

是否可以在 Windows 7 中获取指向默认音频端点设备缓冲区的指针?

如何从 MMDevice 获取通道数?

如何从 mp4 容器中获取 aac 音频? (Windows 电话 7 和 C#)