2012-01-20 21 views
1

私は、インターネット上にある次のコードを使用して、Win7で自分のコンピュータ上で実行中のプロセス/セッションのリストを取得しようとしています。しかし、それは動作しませんか?私はコンパイルエラーがありません。実行中/現在のプロセスのリストを取得できませんか?

namespace CurrentProcessesLister 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Process[] runningProcesses = Process.GetProcesses(); 
      var currentSessionID = Process.GetCurrentProcess().SessionId; 
      Process[] sameAsthisSession = (from c in runningProcesses where c.SessionId == currentSessionID select c).ToArray(); 

      foreach (var p in sameAsthisSession) 
      { 
       Trace.WriteLine(p.ProcessName); 
      } 
     } 
    } 
} 
+0

痛いが、それは読みやすいですどこにあなたのコードをフォーマットしてください。それは、あなたの質問に全体的に簡単に答えることを可能にします。 – jlafay

+0

出力は何ですか? (良いフォーマットbtw) – OSH

+0

ありがとう。私はちょうどコードのテキストにandを追加しましたが、フォーマットに関する考えはありません。どのようにフォーマットしましたか? – user1154138

答えて

7

"コンソールの出力がない"

その後

Console.WriteLine(p.ProcessName); 

Trace.WriteLine(p.ProcessName); 

を置き換えるしかし、あなたは、まだ表示されない場合何か、それは駅に時間ですデバッガを使用してください。

1

問題は、Trace.WriteLineを使用してテキストを出力していることです。これはプログラムのトレースに使用され、デフォルトでコンソールに表示されません。代わりにConsole.WriteLineを使用してください。

foreach (var p in sameAsthisSession) 
    { 
     Console.WriteLine(p.ProcessName); 
    } 
0

これまでの記事でさらに詳しく説明すると、トレース出力が実際に表示されますが、Visual Studioのデバッガの出力ウィンドウを調べる必要があります。最初に投稿したコードは、実際に出力ウィンドウのデバッグセクションの下にプロセスを表示します。

'ConsoleApplication1.Program ..' 'ConsoleApplication1.vshost.exe' (マネージド(v4.0.30319)):ロード 「C:\ WINDOWS \ Microsoft.Net \アセンブリ\ GAC_MSIL \ System.Configuration \ v4.0_4.0.0.0__b03f5f7f11d50a3a \ System.Configuration.dll '、 読み込み中の記号をスキップしました。モジュールが最適化され、デバッガオプション 「My Just Code」が有効になります。
devenvを
のWinlogon 等...ここ

+0

申し訳ありませんが、私はいつもCtrl + F5をF5の代わりに使用していますが、私はそれを見ましたが、実行中のセッションの動的/ライブリストを取得するにはどうすればいいですか? – user1154138

+0

意味一度実行するのではなく、常にリストを更新したいと思っていますか?最も簡単な方法は、定期的にコードをループし、新しいリストを末尾に追加するか、 。 –

1

は、迅速かつ汚い方法です...

Process[] proc = Process.GetProcesses(); 
    foreach(Process theprocess in proc) 
    { 
    Console.WriteLine("Process: {0} ID: {1}", theprocess.ProcessName, theprocess.Id); 
    } 
関連する問題