创建一个控制台应用。
通过nuget安装CSCore
以下是参考代码:
using CSCore.CoreAudioAPI;
using System;
public class Programe
{
private static void Main(string[] args)
{
using (var sessionManager = GetDefaultAudioSessionManager2(DataFlow.Render))
{
using (var sessionEnumerator = sessionManager.GetSessionEnumerator())
{
foreach (var session in sessionEnumerator)
{
using (var audioSessionControl2 = session.QueryInterface<AudioSessionControl2>())
{
var process = audioSessionControl2.Process;
using (var audioMeterInformation = session.QueryInterface<AudioMeterInformation>())
{
var value = audioMeterInformation.GetPeakValue();
if (value != 0)
{
if (process != null)
{
var val = audioMeterInformation.GetPeakValue();
Console.WriteLine("Pid:{0},应用: {1},播放信息:{2},音量:{3}",
audioSessionControl2.ProcessID,
process.ProcessName,
process.MainWindowTitle,
val);
}
}
}
}
}
}
}
Console.ReadKey();
}
private static AudioSessionManager2 GetDefaultAudioSessionManager2(DataFlow dataFlow)
{
using (var enumerator = new MMDeviceEnumerator())
{
using (var device = enumerator.GetDefaultAudioEndpoint(dataFlow, Role.Multimedia))
{
Console.WriteLine("默认设备: " + device.FriendlyName);
var sessionManager = AudioSessionManager2.FromMMDevice(device);
return sessionManager;
}
}
}
}
运行效果:
参考链接:
其他:
这个PeakValue应该是峰值,不是当前的音量值,所以应该是不能拿这个值当作当前音量大小的判断的。