NAudioとは
NAudioを使用すればWindowsの音量をC#のコードで変更することができます
nugetでインストールします
dotnet add package NAudio
使い方
再生デバイスの取得
var devEnum = new MMDeviceEnumerator();
var device = devEnum.GetDefaultAudioEndpoint(DataFlow.Render, Role.Multimedia);
マスター音量の取得
音量の範囲は0~1.0です
var masterVolume = device.AudioEndpointVolume.MasterVolumeLevelScalar;
マスター音量の変更
下記例では音量を0.5に変更します
device.AudioEndpointVolume.MasterVolumeLevelScalar = 0.5f;
プロセスごとの音量を取得する
Windows10ではマスター音量とは別にプロセスごとの音量を管理することができます
var sessions = device.AudioSessionManager.Sessions;
var sessionCount = sessions.Count;
for (var i = 0; i < sessionCount; i++)
{
var session = device.AudioSessionManager.Sessions[i];
Console.WriteLine($"{session.DisplayName}: {session.SimpleAudioVolume.Volume}");
}
特定プロセスの音量を変更する
下記コードはGoogle Chromeの音量を変更する例です
まずプロセス名でGoogle Chromeのプロセスを取得します
Google Chromeは内部で複数プロセスが動いているので全プロセスを取得する必要があります
sessionをループで回しながら、Google ChromeのプロセスIDのどれかに合致するものがあれば音量を変更します
var processIds = System.Diagnostics.Process.GetProcesses().Where(x => x.ProcessName == "chrome").Select(x => x.Id).ToArray();
var sessions = device.AudioSessionManager.Sessions;
var sessionCount = sessions.Count;
for (var i = 0; i < sessionCount; i++)
{
var session = device.AudioSessionManager.Sessions[i];
if (processIds.Contains((int)session.GetProcessID))
{
session.SimpleAudioVolume.Volume = 0.5f;
break;
}
}