C#操作windows系統(tǒng)進程的方法
更新時間:2022年05月25日 09:35:11 作者:springsnow
這篇文章介紹了C#操作windows系統(tǒng)進程的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
一、概述
一個Process組件提供了在計算機運行進程的訪問權限。 進程,在最簡單的術語中,是正在運行的應用。提供對本地和遠程進程的訪問權限并使你能夠啟動和停止本地系統(tǒng)進程。
屬性
- Id 獲取關聯(lián)進程的唯一標識符。
- ProcessName 獲取該進程的名稱。
- MachineName 獲取關聯(lián)進程正在其上運行的計算機的名稱。
- SessionId 獲取關聯(lián)進程的終端服務會話標識符。
- StandardError 獲取用于讀取應用程序錯誤輸出的流。
- StandardInput 獲取用于寫入應用程序輸入的流。
- StandardOutput 獲取用于讀取應用程序文本輸出的流。
- StartInfo 獲取或設置要傳遞給 Process 的 Start() 方法的屬性。
- StartTime 獲取關聯(lián)進程啟動的時間。
- Threads 獲取在關聯(lián)進程中運行的一組線程。
- Handle 獲取關聯(lián)進程的本機句柄。
- MainWindowHandle 獲取關聯(lián)進程主窗口的窗口句柄。
- MainWindowTitle 獲取進程的主窗口標題。
- MainModule 獲取關聯(lián)進程的主模塊。
- Modules 獲取已由關聯(lián)進程加載的模塊。
方法
- GetCurrentProcess() 獲取新的 Process 組件并將其與當前活動的進程關聯(lián)。
- GetProcessById(Int32) 返回新的 Process 組件(給定本地計算機上某個進程的標識符)。
- GetProcesses() 為本地計算機上的每個進程資源創(chuàng)建一個新的 Process 組件。
- GetProcessesByName(String) 創(chuàng)建新的 Process 組件的數(shù)組,并將它們與本地計算機上共享指定的進程名稱的所有進程資源關聯(lián)。
- Kill() 立即停止關聯(lián)的進程。
- Start() 啟動(或重用)此 Process 組件的 StartInfo 屬性指定的進程資源,并將其與該組件關聯(lián)。
- WaitForExit(Int32) 指示 Process 組件在指定的毫秒數(shù)內等待關聯(lián)進程退出。
二、使用方法
1、建立和銷毀進程 System.Diagnosties
System.Diagnostics.Process p=Process.Start("notepad.exe","File.txt"); Thread.Sleep(2000); p.Kill();
2、后臺運行進程:
ProcessStartInfo psi = new ProcessStartInfo("cmd.exe"); psi.Arguments = @"/c copy c:\1.txt lpt1"; psi.CreateNoWindow = true; psi.UseShellExecute = false;//默認為true, 使用外殼程序啟動進程。否則,直接從可執(zhí)行文件創(chuàng)建進程。 Process p = Process.Start(psi); if (!p.WaitForExit(1000 * 7))//啟動外部程序,等待其退出 { p.Kill(); } p.Close();
或者
ProcessStartInfo psi = new ProcessStartInfo("cmd.exe");//FileName psi.RedirectStandardInput = true; psi.RedirectStandardOutput = true; psi.CreateNoWindow = true;//將此屬性設置為false,就能重定向進程。。。 psi.UseShellExecute = false;// Process p = Process.Start(psi); StreamWriter sw = p.StandardInput; StreamReader sr = p.StandardOutput; sw.WriteLine(@"/c copy c:\1.txt lpt1"); sw.Close(); Console.Write(sr.ReadToEnd()); sr.Close(); p.Close();
3、啟動外部程序
System.Diagnostics.Process.Start("explorer.exe", @"c:/"); //用資源管理器打開C:/ System.Diagnostics.Process.Start("rundll32.exe", @"shell32.dll,Control_RunDLL appwiz.cpl,,0");//打開“添加或刪除程序”的面板:
4、列舉計算機中運行中的進程
var pList = Process.GetProcesses().OrderBy(x => x.Id).Take(10); foreach (var p in pList) { Console.WriteLine(string.Format("ProcessID is {0} \t ProcessName is {1}", p.Id, p.ProcessName)); }
5、獲取進程中的多個模塊
var mList = Process.GetCurrentProcess().Modules; foreach (ProcessModule m in mList) { Console.WriteLine(string.Format("ModuleName is {0} \t ModuleURL is {1} \t ModuleVersion is {2}", m.ModuleName, m.FileName, m.FileVersionInfo.FileVersion)); }
到此這篇關于C#操作windows系統(tǒng)進程的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Entity?Framework映射TPH、TPT、TPC與繼承類
這篇文章介紹了Entity?Framework映射TPH、TPT、TPC與繼承類,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-06-06C# Dynamic關鍵字之:調用屬性、方法、字段的實現(xiàn)方法
本篇文章是對C#中調用屬性、方法、字段的實現(xiàn)方法進行了詳細的分析介紹,需要的朋友參考下2013-05-05