急! 用C#编的显示进程的程序 与Windows任务管理器里显示的进程是否相同 为什么??C#代码如下 System.Diagnostics.Process[] myProcesses = System.Diagnostics.Process.GetProcesses();
 
            foreach (System.Diagnostics.Process proc in myProcesses)
            {
                System.Diagnostics.ProcessThreadCollection myThreads = proc.Threads;
                Console.Write("process: {0},  id: {1}, ", proc.ProcessName, proc.Id);
 
                foreach (System.Diagnostics.ProcessThread pt in myThreads)
                {
                    try
                    {
                        Console.Write("thread: {0}, ", pt.Id);
                        Console.Write("started: {0}, ", pt.StartTime.ToString());
                        Console.Write("CPU time: {0}, ", pt.TotalProcessorTime);
                        Console.Write("priority: {0}, ", pt.BasePriority);
                        Console.Write("thread state: {0}\n\n", pt.ThreadState.ToString());
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                }
            }

解决方案 »

  1.   

    这段代码显示的是任务管理器中的每个进程的名字和其中所有线程的特性,包括线程ID,线程开始时间,总的处理时间,优先级,和线程状态.proc.ProcessName显示的进程名字和任务管理器中的是一样的,只是没有扩展名.比名在任务管理器中看到A.EXE,那proc.ProcessName显示的是A,没有后面的.EXE
      

  2.   

    相同public static Process[] GetProcesses ()使用此方法创建新的 Process 组件的数组,并将它们与本地计算机上的所有进程资源关联。该进程资源必须已经存在于本地计算机上,因为 GetProcesses 不创建系统资源,而是将资源与应用程序生成的 Process 组件进行关联。因为操作系统本身正在运行后台进程,所以此数组永远不为空。