在Windows 7上,有API可以列举出机器上的所有音频会话,您可以使用这些API列举出当前(或最近)播放音频的进程。但是需要注意的是,存在一些严重的限制。例如,您无法发现使用第三方音频堆栈(如ASIO)的应用程序,也无法检测使用独占模式渲染压缩音频的应用程序。但对于大部分应用程序(98%?),您可以使用IAudioSessionManager2接口来检索会话枚举器,从而列举在共享模式下正在渲染(或最近已经渲染过)音频的应用程序。不幸的是,此功能仅适用于Windows 7系统。
从Microsoft的sysinternals下载进程资源管理器。安装后,在界面中点击“查找”、“查找句柄或DLL”。 在Vista中,我输入了audioses.dll(音频会话)和audioeng.dll(音频引擎)。 任何一个都会列出可以/正在使用声卡的应用程序列表。 谢谢, -Mathew