2010-08-06 77 views
3

我希望我的应用程序监视和记录在我的应用程序存在期间在winxp机器中启动和终止的进程。我不想获取正在运行的所有进程名称。我怎样才能做到这一点?任何想法赞赏..谢谢。如何监视使用c#的进程?

回答

0
public static void Monitor() 
    { 
     ArrayList existingProcesses = GetExistingProcess(); 

     while (true) 
     { 
      ArrayList currentProcesses = new ArrayList(); 
      currentProcesses = GetCurrentProcess(); 

      ArrayList NewApps = new ArrayList(GetCurrentProcess()); 

      foreach (var p in ExistingProcess) 
      { 
       NewApps.Remove(p); 
      } 
      string str = ""; 
      foreach (string NewApp in NewApps) 
      { 
       str = "Process Name : " + NewApp + " Process ID : " + System.Diagnostics.Process.GetProcessesByName(NewApp)[0].Id.ToString() + " "; 
      } 
      MessageBox.Show(str); 
     } 
    } 
1

最简单的方法,不挂钩到任何窗口的内部将是每隔一段时间轮询正在运行的进程列表。

using System.Diagnostics; 


// Poll every 5 seconds 
while(true) 
{ 
    // Get a list of running processes 
    Process[] processlist = Process.GetProcesses(); 

    // Do logging 
    // ... 

    Thread.Sleep(5000); 
} 
+0

我不想获取所有进程名称。需要在应用程序运行的线程中启动和终止的进程名称。 – Anuya 2010-08-06 08:43:16

+0

@Anuya在这种情况下,你需要改变你的问题,因为这不是你问的。 – 2010-08-06 08:44:54

+0

改编......谢谢,现在该怎么办? – Anuya 2010-08-06 08:49:31

1

您可以列出使用Process.GetProcesses的所有进程。

然后,您可以监视返回的进程数组中的每个进程。