当前位置:编程学习 > C#/ASP.NET >>

求助:关于C#如何取得某个进程的线程所有信息。

求助:关于C#如何取得某个进程的线程所有信息,包括线程某个文件的启动路径。如D:/test.txt如此。
     Process process = Process.GetProcessById(5244);
         
            foreach (ProcessThread thread in process.Threads)
            {

                dataGridView1.Rows.Add(new object[] {  thread.ID, thread.TotalProcessorTime, thread.UserProcessorTime });
            }
这里的代码无法取得。。还请大师赐教啊。 --------------------编程问答-------------------- 取得进程的可执行程序文件路径:
Console.WriteLine(Process.GetProcessById(1088).MainModule.FileName); --------------------编程问答-------------------- Process[] ps = System.Diagnostics.Process.GetProcesses(); 
            foreach (Process p in ps) 
            { 
                if (p.MainWindowHandle != null) 
                { 
                    
                   Console.WriteLine(p.MainModule.FileName);
                   
                } 
            } 
--------------------编程问答-------------------- http://msdn.microsoft.com/zh-cn/library/system.diagnostics.process_properties(v=VS.80).aspx --------------------编程问答-------------------- spy++ --------------------编程问答--------------------

StringBuilder wmi = new StringBuilder();

// ProcessHandle = pid 自己设
foreach (var item in new ManagementObjectSearcher("select * from Win32_Thread where ProcessHandle = 0").Get())

      wmi.AppendFormat("\tCaption: {0}\r\n", item["Caption"]); 
      wmi.AppendFormat("\tCreation Class Name: {0}\r\n", item["CreationClassName"]);
      wmi.AppendFormat("\tCS Creation Class Name: {0}\r\n", item["CSCreationClassName"]);
      wmi.AppendFormat("\tCS Name: {0}\r\n", item["CSName"]);
      wmi.AppendFormat("\tDescription: {0}\r\n", item["Description"]);
      wmi.AppendFormat("\tElapsed Time: {0}\r\n", item["ElapsedTime"]);
      wmi.AppendFormat("\tExecution State: {0}\r\n", item["ExecutionState"]);
      wmi.AppendFormat("\tHandle: {0}\r\n", item["Handle"]);
      wmi.AppendFormat("\tInstall Date: {0}\r\n", item["InstallDate"]);
      wmi.AppendFormat("\tKernel Mode Time: {0}\r\n", item["KernelModeTime"]);
      wmi.AppendFormat("\tName: {0}\r\n", item["Name"]);
      wmi.AppendFormat("\tOS Creation Class Name: {0}\r\n", item["OSCreationClassName"]);
      wmi.AppendFormat("\tOS Name: {0}\r\n", item["OSName"]);
      wmi.AppendFormat("\tPriority: {0}\r\n", item["Priority"]);
      wmi.AppendFormat("\tPriority Base: {0}\r\n", item["PriorityBase"]);
      wmi.AppendFormat("\tProcess Creation Class Name: {0}\r\n", item["ProcessCreationClassName"]);
      wmi.AppendFormat("\tProcess Handle: {0}\r\n", item["ProcessHandle"]);
      wmi.AppendFormat("\tStart Address: {0}\r\n", item["StartAddress"]);
      wmi.AppendFormat("\tStatus: {0}\r\n", item["Status"]);
      wmi.AppendFormat("\tThread State: {0}\r\n", item["ThreadState"]);
      wmi.AppendFormat("\tThread Wait Reason: {0}\r\n", item["ThreadWaitReason"]);
      wmi.AppendFormat("\tUser Mode Time: {0}\r\n", item["UserModeTime"]); 
}
Console.WriteLine(wmi);
--------------------编程问答-------------------- .net中的process好像没有这个功能,从modules获取的只是加载的DLL或者EXE
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,