在Windows系统中使用音频检测进程

5

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

3个回答

5
在Windows 7上,有API可以列举出机器上的所有音频会话,您可以使用这些API列举出当前(或最近)播放音频的进程。但是需要注意的是,存在一些严重的限制。例如,您无法发现使用第三方音频堆栈(如ASIO)的应用程序,也无法检测使用独占模式渲染压缩音频的应用程序。但对于大部分应用程序(98%?),您可以使用IAudioSessionManager2接口来检索会话枚举器,从而列举在共享模式下正在渲染(或最近已经渲染过)音频的应用程序。不幸的是,此功能仅适用于Windows 7系统。

这些包括使用waveOut或DirectSound API的应用程序吗? - Mark Heath
如果他们正在播放未经压缩的音频,是的。 - Larry Osterman

4

从Microsoft的sysinternals下载进程资源管理器。安装后,在界面中点击“查找”、“查找句柄或DLL”。

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

任何一个都会列出可以/正在使用声卡的应用程序列表。

谢谢, -Mathew


0
你不需要使用进程管理器。
只需要从ring3枚举句柄表(旧的FAQ,Google groups,Win32)即可。

2
一些API,例如ASIO,不能通过这种方式找到。并非所有的知识都来自于旧的FAQ。买一些新书吧。 - Robert Harvey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接