(Process類在System.Diagnostics命名空間下)
【1】獲取本地計算機所有進程
1 Progress[] myProgress = Progress.GetProcesses();
【2】獲取本地計算機上指定的名稱的進程
1 Process[] myProcess = Process.GetProcessesByName("進程名稱");
如: 1 Process[] myProcess = Process = Process.GetProcessByNeme("Notepad++");
【3】獲取遠程計算機的所有進程
1 Process[] myProcess = Process.GetProcesses(remoteMachineName);
其中remoteMachineName可以是遠程計算機名稱,也可以是遠程計算機IP地址
【4】獲取遠程計算機上指定名稱的進程
1 Process[] myProcess = Process.GetProcessesByName(processName, remoteMachineName);
其中processName是不包括.exe或路徑名的進程名稱
例子:
1 using System; 2 using System.Diagnostics; 3 4 namespace ProcessLocal 5 { 6 class Program 7 { 8 static void Main(string[] args) 9 { 10 Process[] myProcess = Process.GetProcesses(); 11 Console.Write("進程ID\t"); 12 Console.Write("進程名稱\t"); 13 Console.Write("物理內存\t"); 14 Console.Write("啟動時間\t"); 15 //Console.Write("文件路徑"); 16 Console.WriteLine(); 17 foreach (Process p in myProcess) 18 { 19 Console.Write(p.Id + "\t"); 20 Console.Write(p.ProcessName + "\t"); 21 Console.Write(string.Format("{0:###,##0.00}MB", p.WorkingSet64 / 1024.0f / 1024.0f) + "\t"); 22 //部分進程無法獲取啟動時間和文件名信息,所以要用try/catch 23 try 24 { 25 Console.Write(String.Format("{0}", p.StartTime) + "\t"); 26 //Console.Write(p.MainModule.FileName + "\t"); 27 } 28 catch 29 { 30 //Console.Write( "\t"); 31 Console.Write("\t"); 32 } 33 Console.WriteLine(); 34 35 } 36 37 Console.Read(); 38 } 39 } 40 }
啟動進程:
1 using System; 2 using System.Diagnostics; 3 4 namespace ProcessLocal 5 { 6 class Program 7 { 8 static void Main(string[] args) 9 { 10 // 1.啟動進程 11 Process myProcess = new Process(); 12 // 准備啟動的進程,在這里是Notepad++ 13 myProcess.StartInfo.FileName = "Notepad++.exe"; 14 // 創建或者打開Text1.txt文件 15 myProcess.StartInfo.Arguments = "Test1.txt"; 16 // 如果啟動的進程帶有窗口,則在這里是正常化窗口 17 myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Normal; 18 // 啟動指定進程 19 myProcess.Start(); 20 } 21 } 22 }