在 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)