2009-03-15 6 views
19

私は、すべてのアクティブなプロセスをループし、タスクマネージャーに似ている(memの使用法、CPUの時間など)それらの診断チェックを行う方法を見つけたいと思います。問題は二つの部分に分かれてWindowsで実行されているすべてのプロセスを一覧表示するにはどうすればよいですか?

:診断がそれらについての属性

を見つけるのすべてのプロセス

  • を見つける

    1. 私はそれについて見て行くにしても何の名前空間にはわかりません。どんなヘルプ/ヒント/リンクも感謝しています。

  • 答えて

    49

    はあなたが診断プログラムの実行Processクラス

    using System.Diagnostics; 
    ... 
    var allProcceses = Process.GetProcesses(); 
    

    を介してこれを行うことができます プロセス

    のすべてを見つける

    あなたがここに私たちにいくつかのより多くの情報を与えることはできますか?あなたがしたいことははっきりしていません。

    プロセスクラスは、あなたに役立つかもしれませんが、少しの情報を提供します。

  • メインウィンドウが
  • すべてのロードモジュールのメモリについて
  • 様々な診断情報(ページングされ、仮想、ワーキングセット、等...)
  • ハンドルすべてのスレッド

    • ため、このクラスを照会することが可能です
    • 基本プロセス情報(ID、名前、ディスクの場所)

    EDIT

    OpはメモリとCPU情報を取得したいと述べています。これらのプロパティは、Processクラス(GetProcesses()によって返されます)ですぐに使用できます。以下は、サポートされているすべてのプロパティを一覧表示するMSDNページです。さまざまなメモリとCPUが用意されており、必要に応じて使用できます。

    http://msdn.microsoft.com/en-us/library/system.diagnostics.process.aspx

    コード:

    あなたの使用してリストに次の行を追加します。

    using System.Diagnostics; 
    

    今、あなたはProcess.GetProcesses()メソッドとプロセスのリストを取得することができ、この例に見られるように:

    Process[] processlist = Process.GetProcesses(); 
    
    foreach (Process theprocess in processlist) { 
        Console.WriteLine("Process: {0} ID: {1}", theprocess.ProcessName, theprocess.Id); 
    } 
    
    0

    あなたはどのオペレーティングシステムを使用していますか?私はあなたのC#タグから、それが窓だと思っていますか?

    もしそうなら、WMI、特にWin32_Processクラスをチェックしてください。ここでは、MSDNのリファレンスです:http://msdn.microsoft.com/en-us/library/aa394372(VS.85).aspx

    と同様に(このようなプロセスのリストを取得するなど)、ここで使用シナリオのカップル:http://msdn.microsoft.com/en-us/library/aa394599(VS.85).aspx

    +0

    はいこれはウィンドウです(トピック内に記載されています)。 – Statement

    +0

    母は、申し訳ありませんが、私の部分で大規模な見落とし! – CapBBeard

    4

    すべてのプロセスを見つけることはかなり簡単actualyです:

    using System.Diagnostics; 
    
          Process[] processes = Process.GetProcesses(); 
    
          foreach (Process process in processes) 
          { 
           //Get whatever attribute for process 
          } 
    
    3

    JaredParすでにProcessクラスを指摘していましたので、インスタンスが作成されたときにクラスがプロセスの情報のスナップショットを取得することに注意してください。ライブビューではありません。更新するには、インスタンス上でRefresh()に電話する必要があります。

    また、プロセスを検査している間にプロセスが終了する可能性があるので、例外をキャッチしてそれに応じて処理するようにしてください。

    最後に、Process.GetProcesses()を呼び出すと、擬似プロセス「アイドル」と「システム」も取得されます。 IIRCには特定のプロセスIDがあり、簡単に除外できます。

    +0

    ありがとうございました。私はこれを念頭に置いておくべきでしょう+1 – Statement

    0

    さてあなたは上記のコードを持つすべてのプロセスを返します

    get-Process 
    

    2.Finding診断はそれら

    get-Process | where-object { $_.Handles -gt 200 } 
    

    に関する属性

    1.FindingすべてのプロセスPowerShellでこれを行うことができます200以上のハンドルで、このような方法で診断属性を簡単に指定することができます。

    ここhow to handle processes using powershell see this

    0
    using System.Diagnostics; 
    
    class Program 
    { 
        static void Main() 
        { 
         Process[] processlist = Process.GetProcesses();`   
        } 
    } 
    

    の詳細については、プロセスarrrayは、それへの本プロセスの全ての数が含まれています。

    +0

    蟻酸塩を改善する – GAMITG

    関連する問題