LoginSignup
0
0

c#でNAudioを使ったプロセス一覧取得

Last updated at Posted at 2023-12-22

はじめに

にわのわです。

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越しにプロセス一覧を取得することで、各プロセスの音量調整も可能です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0