如何使用c#监控进程?

时间:2010-08-06 08:33:18

标签: c#

我希望我的应用程序监视并记录在我的应用程序存在期间在winxp机器中启动和终止的进程。我不想得到所有正在运行的进程名称。我怎样才能实现这一目标?任何想法都赞赏..谢谢。

5 个答案:

答案 0 :(得分:4)

答案 1 :(得分:1)

最简单的方法是,无需挂钩任何Windows内部,就是经常轮询正在运行的进程列表。

using System.Diagnostics;


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

    // Do logging
    // ...

    Thread.Sleep(5000);
}

答案 2 :(得分:1)

使用WMI ...有关简介,请参阅this

答案 3 :(得分:1)

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

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

答案 4 :(得分: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);
        }
    }