Я ищу текущие фактические уровни выхода, а не то, что громкость установлена.
В идеале это должен быть инструмент командной строки, но если бы я мог сгенерировать его самостоятельно с помощью API, это также было бы приемлемо.
Я ищу текущие фактические уровни выхода, а не то, что громкость установлена.
В идеале это должен быть инструмент командной строки, но если бы я мог сгенерировать его самостоятельно с помощью API, это также было бы приемлемо.
Я продолжал искать и смог собрать приложение командной строки, чтобы сделать это сам:
using System;
using System.Collections.Generic;
using CSCore.CoreAudioAPI;
using System.Diagnostics;
using System.Web.Script.Serialization;
namespace VolumeLevel
{
class Program
{
static void Main(string[] args)
{
using (var sessionManager = GetDefaultAudioSessionManager2(DataFlow.Render))
{
using (var sessionEnumerator = sessionManager.GetSessionEnumerator())
{
IDictionary<string, float> procs = new Dictionary<string, float>();
foreach (var session in sessionEnumerator)
{
using (var audioMeterInformation = session.QueryInterface<AudioMeterInformation>())
using (var session2 = session.QueryInterface<AudioSessionControl2>())
{
if (session2.ProcessID > 0 && audioMeterInformation != null) procs[session2.Process.MainWindowTitle] = audioMeterInformation.GetPeakValue();
}
}
if (procs.Count > 0)
{
Console.WriteLine(new JavaScriptSerializer().Serialize(procs));
} else
{
Console.WriteLine("{}");
}
Environment.Exit(0);
}
}
}
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;
}
}
}
}
}
Вывод будет примерно таким:
{"Spotify Premium":0.8345225}
Для этого требуется библиотека CSCore, которую вы можете получить здесь, и вам нужно будет добавить ссылку на System.Web.Extensions
для вывода в формате JSON.