Obtendo o nível de saída de volume atual do aplicativo individual do Windows, conforme visualizado no Mixer de áudio

Eu estou tentando escrever um código c # que gera o nível de saída de áudio atual de cada um dos aplicativos do windows acessando a saída de som (como mostrado com barras verdes em constante mudança do mixer de volume).

O programa irá verificar a cada 10 ms, e as saídas são assim: Windows Media Player: 30, Mozilla Firefox: 0, Adobe Flash Player: 35 (conforme a figura)

Eu estou usando o Windows 7 e tentando em c # (como Java não pode conseguir isso).

Eu encontrei maneiras de obter e definir o volume mestre (a barra de controle que mostra 65% para o Windows Media Player) para um aplicativo em execução, existe uma maneira de obter os dados de nível flutuante verde?

Obrigado!

Mixer de áudio

Você pode usar o CSCore . Existe um wrapper para as audiências do CoreAudioAPI. Use algo parecido (para mais detalhes, dê uma olhada nos unittests: AudioSession-UnitTests ):

private static void Main(string[] args) { using (var sessionManager = GetDefaultAudioSessionManager2(DataFlow.Render)) { using (var sessionEnumerator = sessionManager.GetSessionEnumerator()) { foreach (var session in sessionEnumerator) { using (var audioMeterInformation = session.QueryInterface()) { Console.WriteLine(audioMeterInformation.GetPeakValue()); } } } } Console.ReadKey(); } private static AudioSessionManager2 GetDefaultAudioSessionManager2(DataFlow dataFlow) { using (var enumerator = new MMDeviceEnumerator()) { using (var device = enumerator.GetDefaultAudioEndpoint(dataFlow, Role.Multimedia)) { Debug.WriteLine("DefaultDevice: " + device.FriendlyName); var sessionManager = AudioSessionManager2.FromMMDevice(device); return sessionManager; } } } 

Para controlar um volume de aplicativos, dê uma olhada nos testes unitários aqui: http://cscore.codeplex.com/SourceControl/latest#CSCore.Test/CoreAudioAPI/AudioSessionTests.cs

Aqui está um aplicativo de amostra que exibe os níveis de áudio dos aplicativos em execução em um gráfico. Existem duas versões, uma no WPF e outra no Windows.Forms. Eles usam o método da resposta de Florian para obter os níveis de áudio.

https://github.com/jeske/SoundLevelMonitor

insira a descrição da imagem aqui