はじめに
にわのわです。
c#にて実行中のプロセスを取得する方法をまとめます。
ソース
NAudioというライブラリを使用します。
また、1つのアプリケーションで複数のプロセスを持つものがあります(Discordなど)。
public ProcessInfo[] GetProcessInfoList()
{
if (defaultPlaybackDevice != null)
{
NAudio.CoreAudioApi.AudioSessionManager sessionManager = defaultPlaybackDevice.AudioSessionManager;
SessionCollection sessions = sessionManager.Sessions;
ProcessInfo[] processInfoList = new ProcessInfo[sessions.Count];
for (int i = 0; i < sessions.Count; i++)
{
AudioSessionControl session = sessions[i];
uint processId = session.GetProcessID;
System.Diagnostics.Process process = System.Diagnostics.Process.GetProcessById((int)processId);
processInfoList[i] = new ProcessInfo
{
ProcessId = (int)processId,
ProcessName = process.ProcessName
};
}
return processInfoList;
}
return new ProcessInfo[1];
}
クラスの構造は以下の通りです。(別途記載が必要)
public class ProcessInfo
{
public int ProcessId { get; set; }
public string ProcessName { get; set; }
}
おまけ
以下のようにして各プロセスのミュート状態を切り替えることができます。
session.SimpleAudioVolume.Mute = true | false;
おわりに
プロセス一覧を取得する方法をまとめました。
NAudio越しにプロセス一覧を取得することで、各プロセスの音量調整も可能です。