2009-06-09 6 views
9

新しいプロセスが作成されると、何らかのイベントが発生しますか。特定のプロセスをチェックするC#アプリケーションを作成していますが、既知のすべてのプロセスを連続して繰り返し処理する無限ループを作成したくありません。代わりに、私はむしろ、イベントによってトリガされたすべての現在のプロセスを通して作成または反復処理される各プロセスをチェックします。助言がありますか?プロセスの作成時にシステムイベントがありますか?

 Process[] pArray; 
     while (true) 
     { 
      pArray = Process.GetProcesses(); 

      foreach (Process p in pArray) 
      { 
       foreach (String pName in listOfProcesses) //just a list of process names to search for 
       { 

        if (pName.Equals(p.ProcessName, StringComparison.CurrentCultureIgnoreCase)) 
        { 
         //do some stuff 

        } 
       } 
      } 

      Thread.Sleep(refreshRate * 1000); 
     } 

答えて

12

WMIは、プロセスの作成(および約100万個の他のもの)を聞く手段を提供します。 my answer hereを参照してください。

void WaitForProcess() 
{ 
    ManagementEventWatcher startWatch = new ManagementEventWatcher(
     new WqlEventQuery("SELECT * FROM Win32_ProcessStartTrace")); 
    startWatch.EventArrived 
         += new EventArrivedEventHandler(startWatch_EventArrived); 
    startWatch.Start(); 
} 

static void startWatch_EventArrived(object sender, EventArrivedEventArgs e) 
{ 
    Console.WriteLine("Process started: {0}" 
         , e.NewEvent.Properties["ProcessName"].Value); 
    if (this is the process I'm interested in) 
    { 
      startWatch.Stop(); 
    } 
} 
関連する問題