DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

実行されているすべてのプロセスを取得する

ProcessクラスのGetProcessesメソッドを使ってローカルコンピュータ上(リモートコンピュータも可能)で実行されているすべてのプロセスを取得できます。

次の例ではローカルコンピュータ上で実行されているすべてのプロセスを取得し、そのプロセス名などを列挙しています。

VB.NET
コードを隠すコードを選択
'ローカルコンピュータ上で実行されているすべてのプロセスを取得
Dim ps As System.Diagnostics.Process() = System.Diagnostics.Process.GetProcesses()
'"machinename"という名前のコンピュータで実行されている
'すべてのプロセスを取得するには次のようにする。
'Dim ps As System.Diagnostics.Process() = _
'    System.Diagnostics.Process.GetProcesses("machinename")

'配列から1つずつ取り出す
For Each p As System.Diagnostics.Process In ps
    Try
        'プロセス名を出力する
        Console.WriteLine("プロセス名: {0}", p.ProcessName)
        'ID
        Console.WriteLine("ID: {0}", p.Id)
        'メインモジュールのパス
        Console.WriteLine("パス: {0}", p.MainModule.FileName)
        '合計プロセッサ時間
        Console.WriteLine("合計プロセッサ時間: {0}", p.TotalProcessorTime)
        '物理メモリ使用量
        Console.WriteLine("物理メモリ使用量: {0}", p.WorkingSet64)
        '.NET Framework 1.1以前では次のようにする
        'Console.WriteLine("物理メモリ使用量: {0}", p.WorkingSet)

        Console.WriteLine()
    Catch ex As Exception
        Console.WriteLine("エラー: {0}", ex.Message)
    End Try
Next
C#
コードを隠すコードを選択
//ローカルコンピュータ上で実行されているすべてのプロセスを取得
System.Diagnostics.Process[] ps =
    System.Diagnostics.Process.GetProcesses();
//"machinename"という名前のコンピュータで実行されている
//すべてのプロセスを取得するには次のようにする。
//System.Diagnostics.Process[] ps =
//    System.Diagnostics.Process.GetProcesses("machinename");

//配列から1つずつ取り出す
foreach (System.Diagnostics.Process p in ps)
{
    try
    {
        //プロセス名を出力する
        Console.WriteLine("プロセス名: {0}", p.ProcessName);
        //ID
        Console.WriteLine("ID: {0}", p.Id);
        //メインモジュールのパス
        Console.WriteLine("パス: {0}", p.MainModule.FileName);
        //合計プロセッサ時間
        Console.WriteLine("合計プロセッサ時間: {0}", p.TotalProcessorTime);
        //物理メモリ使用量
        Console.WriteLine("物理メモリ使用量: {0}", p.WorkingSet64);
        //.NET Framework 1.1以前では次のようにする
        //Console.WriteLine("物理メモリ使用量: {0}", p.WorkingSet);

        Console.WriteLine();
    }
    catch (Exception ex)
    {
        Console.WriteLine("エラー: {0}", ex.Message);
    }
}
  • 履歴:
  • 2007/1/15 .NET Framework 2.0に関する記述を追加。
  • 2010/9/21 VB.NETのコードのコメントが、C#のものになっていたのを修正。
  • 2011/7/6 VB.NETのコメントのコードが、C#のものになっていたのを修正。