c# - 检查应用程序是否发出声音

标签 c# wpf audio cscore

今天,我在这里问您,如果给定的应用程序正在发出声音,您如何“理解”。
在Windows 7和Windows 8上,我使用以下代码(库CSCore Audio)

[...]
        AudioSessionManager2 sessionManager = GetDefaultAudioSessionManager2(DataFlow.Render);
        AudioSessionEnumerator sessionEnumerator = sessionManager.GetSessionEnumerator();

                AudioSessionControl2 sessionControl;
                foreach (AudioSessionControl session in sessionEnumerator)
                {
                    sessionControl = session.QueryInterface<AudioSessionControl2>();
                    if (sessionControl.Process.MainWindowTitle.StartsWith("my_test"))
                    {
                        sessione = sessionControl;
                        audio = session.QueryInterface<AudioMeterInformation>();
                        break;
                    }
                }

        control.Text = sessione.Process.MainWindowTitle + "[" + audio.PeakValue + "]";
    [...]

它运作良好,但不适用于Windows XP。
有一种“通用”的方法吗?
如果有一种用Java做到这一点的方法会更好,那么请在Linux上工作(目前我不需要,但将来可能不需要)

最佳答案

抱歉,Windows XP无法查询进程的音频峰值。您还可以查看Windows XP Audio Mixer。没有显示峰值。

关于c# - 检查应用程序是否发出声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23182880/

相关文章:

c# - 装饰器内的动画(调用 OnRender)

wpf - "The calling thread must be STA"解决方法

java - 设计音频架构

python - Scipy:尝试写入 wav 文件,AttributeError: 'list' 对象没有属性 'dtype'

c# - 检索具有 CLSID 的组件的 COM 类工厂 - 类未注册

c# - 如何在企业应用程序中使用 Entity Framework

c# - 如何使 Entity Framework 存储过程异步?

wpf - 在 XAML 中设置 ContentControl 的背景颜色

c# - 使用字典时如何避免运行时错误

spring - 我如何在 Spring 阻止音频(mic)控件