Мне нужно получить уровень звука конкретного окна - PullRequest
0 голосов
/ 24 октября 2018

Я довольно новичок в c #, я хочу создать программу, которая будет предупреждать меня, если у меня префикс громкости окна станет слишком высоким, например, у меня Spotify, запущенный в фоновом режиме, неожиданно высокий звук, а затем я получаю предупреждениеМожно ли это сделать на низкоуровневом уровне, который я могу понять?

Я уже пробовал, с открытым исходным кодом, использующим cscore, я действительно продвинулся, но его способ продвинуться для меня дажеПродолжайте в том же духе, вот где я использую исходный код:

Получение текущего уровня громкости для отдельных приложений Windows, как показано в 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время, если звук с высокой громкостью повторяется, он не отображает окно сообщения снова, это происходит только один раз для каждого окна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...