java - 如何检测哪个程序在 Windows 7 上播放声音?

标签 java winapi audio winamp

我正在尝试编写一个小的后台程序,在另一个程序播放声音时停止播放 Winamp 的音乐。关于通过 Java 访问 Winamp 的部分已经解决了,现在我需要一种方法来检测哪个程序播放当前播放的声音(可能我想让一些程序在不停止我的音乐的情况下播放它们的声音)。尽管我是在 Java(+ winapi)中这样做的,但任何语言的一切都会有所帮助。

[编辑] 因为我刚刚对我的第一个问题进行了第一次反对,这里有一些更详细的信息:我已经弄清楚了如何使用 winapi(但我不知道)并捕获诸如音量级别之类的东西。仍然有问题的是所提到的检测所播放声音的来源以及播放声音的程序。 winapi 中有什么可以帮助我做到这一点吗?[/edit]

最佳答案

正如 Deanna 提到的,您可以像 Volume Mixer 应用程序(从系统托盘图标启动)那样枚举音频播放 session ,并获取指示 session 状态的每个 session 计量器。

您可以在这个答案中找到执行此操作的 C++ 应用程序:Peak meters for individual programs on Windows 7 .这些计量器是按 session 计算的,启用音频的应用程序中可能有一个或多个 session ,但最终只要您枚举它们,就可以确定那里是否有任何 Activity 播放。

关于java - 如何检测哪个程序在 Windows 7 上播放声音?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14758360/

相关文章:

java - 处理可抛出异常与日志记录异常

delphi - 如何打开/关闭显示器?

ios - 在 iOS 上通过耳机插孔获取开关控制的输入

audio - iPhone 4.0 应用程序进入 backgroundMode 后如何运行音频

c++ - 使用PID获取内存和CPU使用率?

iphone - 设置允许 airplay 不通过 airplay 发送声音

当只有一个直接 child 时,Java 返回 "ScrollView can host only one direct child"

java - 在mule3中,如何为choice-when路由器设置自定义表达式?

java - 启动画面 Android - 倒数计时器显示

delphi - 如何从当前 Windows 语言环境获取 HTTP 字符集名称?