在 Windows 上使用音频检测进程

Posted

技术标签:

【中文标题】在 Windows 上使用音频检测进程【英文标题】:Detect Processes using Audio on Windows 【发布时间】:2009-06-02 11:12:29 【问题描述】:

如何检测我的 Windows 机器上哪些进程正在播放音频?换句话说,我如何枚举正在使用我的声卡的进程?

【问题讨论】:

【参考方案1】:

在 Windows 7 上,有一些 API 可让您枚举机器上的所有音频会话,您可以使用这些 API 来枚举当前(或最近)播放音频的进程。

对此有一些严重的警告。例如,您无法发现使用 ASIO 等第 3 方音频堆栈的应用程序,也无法检测呈现压缩音频(使用独占模式)的应用程序。但是对于很大一部分(98%?)的应用程序,您可以使用 IAudiosessionManager2 接口来检索会话枚举器,它可以让您枚举在共享模式下呈现(或最近呈现)音频的应用程序。

很遗憾,此功能仅适用于 Windows 7。

【讨论】:

这些是否包括使用 waveOut 或 DirectSound API 的应用程序? 如果他们播放的是未压缩的音频,是的。【参考方案2】:

从 sysinternals (Microsoft) 下载进程浏览器。安装完成后在界面中点击“查找”“查找句柄或DLL”

在 Vista 中我输入了 audioses.dll(音频会话) 和 audioeng.dll(音频引擎)

其中任何一个都会显示可以/确实使用声卡的应用列表。

谢谢, -马修

【讨论】:

【参考方案3】:

您不需要进程资源管理器。 只需从 ring3 枚举句柄表(旧常见问题解答、Google 群组、Win32)

【讨论】:

一些提到的API,比如ASIO,无法通过这种方式找到。并非所有知识都来自旧的常见问题解答。买一些新书。

以上是关于在 Windows 上使用音频检测进程的主要内容,如果未能解决你的问题,请参考以下文章

如何检测其他应用程序的音频是不是在后台播放? (UWP,Windows 10)

使用 Python 在 Windows 上检测系统声音

从 Windows Phone 上的轨道检测音频电平

英雄联盟打开麦克风windows音频设备图形隔离

使用 IOCP - C++ - Windows 检测子进程的退出/失败

如何检测是不是有任何进程阻止 Windows 进入睡眠状态?