我正在尝试编写一个小的后台程序,当另一个程序播放声音时,它会阻止音乐播放Winamp。关于通过Java访问Winamp的部分已经解决了,我现在需要一种方法来检测哪个节目播放当前播放的声音(可能我想让一些节目播放他们的声音而不停止我的音乐)。虽然我在Java(+ winapi)中这样做,但任何语言的一切都会有所帮助。
[编辑]因为我刚刚在第一个问题上得到了第一个问题,这里有一些更详细的信息:我已经想出了如何使用winapi(但我不知道)并捕获音量和音量等内容。仍然存在问题的是上面提到的对所播放声音的起源的检测以及哪个节目播放声音。 winapi中有什么可以帮助我做到这一点吗?[/ edit]
答案 0 :(得分:3)
我相信Vista +中的Windows Core Audio API允许您获得每个应用程序的VU级别(毕竟,调音台会显示它)。这应该允许你在另一个应用程序播放时关闭一个应用程序等。
答案 1 :(得分:3)
正如Deanna所说,你可以枚举音频播放会话,就像Volume Mixer应用程序(从系统托盘图标启动)一样,并获得指示会话状态的每会话米。
您可以在此答案中找到执行此操作的C ++应用程序:Peak meters for individual programs on Windows 7。这些仪表是每个会话,启用音频的应用程序可能有一个或多个会话,但最终只要您枚举它们,就可以确定是否有任何活动播放。