我需要获取特定窗口的声音水平

时间:2018-10-24 06:22:32

标签: c# audio

我对c#还是很陌生,我想编写一个程序来警告我,如果我加前缀的窗口音量过高,例如,当我在后台运行Spotify时突然发出高音调,那么我会收到警报,这是否可能以我能理解的低层次方式做到?

我已经尝试过,一个使用cscore的开放源代码,虽然确实取得了一些进步,但是它为我带来了进步,甚至可以继续前进,这是我使用的源代码:

Getting individual windows application current volume output level as visualized in audio Mixer

我做到了,所以它发送了一个消息框,其窗口名称变得声音很高,但是如果我能做到的话,它在第一次没有得到更多消息框后仅工作了1次所以它不断发送消息框对我来说是完美的

修改
我下载了链接到的程序的源代码,它位于链接的底部

我改变了

var value = audioMeterInformation.GetPeakValue();

大约为0.9

并在此处添加了一个消息框:

 using (var audioMeterInformation = session.QueryInterface<AudioMeterInformation>()) {
                                        var value = audioMeterInformation.GetPeakValue();
                                        if (value != 0) {
                                            if (process != null) {
                                                seenPids.Add(sessionid);
                                                List<double> samples;
                                                if (!sessionIdToAudioSamples.TryGetValue(sessionid, out samples)) {
                                                    samples = new List<double>();
                                                    sessionIdToAudioSamples[sessionid] = samples;
                                                    if(process.MainWindowTitle == "NAME OF MY WINDOW")
                                                    {
                                                        MessageBox.Show("true");
                                                    }
                                                }
                                                var val = audioMeterInformation.GetPeakValue();
                                                samples.Add(val);
                                                truncateSamples(samples);

我收到消息框,但是只有1次,如果再次出现高音量声音,它将不再显示消息框,而是每个窗口只出现一次。

0 个答案:

没有答案