C#操作windows系統(tǒng)進(jìn)程的方法
一、概述
一個(gè)Process組件提供了在計(jì)算機(jī)運(yùn)行進(jìn)程的訪問(wèn)權(quán)限。 進(jìn)程,在最簡(jiǎn)單的術(shù)語(yǔ)中,是正在運(yùn)行的應(yīng)用。提供對(duì)本地和遠(yuǎn)程進(jìn)程的訪問(wèn)權(quán)限并使你能夠啟動(dòng)和停止本地系統(tǒng)進(jìn)程。
屬性
- Id 獲取關(guān)聯(lián)進(jìn)程的唯一標(biāo)識(shí)符。
- ProcessName 獲取該進(jìn)程的名稱(chēng)。
- MachineName 獲取關(guān)聯(lián)進(jìn)程正在其上運(yùn)行的計(jì)算機(jī)的名稱(chēng)。
- SessionId 獲取關(guān)聯(lián)進(jìn)程的終端服務(wù)會(huì)話(huà)標(biāo)識(shí)符。
- StandardError 獲取用于讀取應(yīng)用程序錯(cuò)誤輸出的流。
- StandardInput 獲取用于寫(xiě)入應(yīng)用程序輸入的流。
- StandardOutput 獲取用于讀取應(yīng)用程序文本輸出的流。
- StartInfo 獲取或設(shè)置要傳遞給 Process 的 Start() 方法的屬性。
- StartTime 獲取關(guān)聯(lián)進(jìn)程啟動(dòng)的時(shí)間。
- Threads 獲取在關(guān)聯(lián)進(jìn)程中運(yùn)行的一組線程。
- Handle 獲取關(guān)聯(lián)進(jìn)程的本機(jī)句柄。
- MainWindowHandle 獲取關(guān)聯(lián)進(jìn)程主窗口的窗口句柄。
- MainWindowTitle 獲取進(jìn)程的主窗口標(biāo)題。
- MainModule 獲取關(guān)聯(lián)進(jìn)程的主模塊。
- Modules 獲取已由關(guān)聯(lián)進(jìn)程加載的模塊。
方法
- GetCurrentProcess() 獲取新的 Process 組件并將其與當(dāng)前活動(dòng)的進(jìn)程關(guān)聯(lián)。
- GetProcessById(Int32) 返回新的 Process 組件(給定本地計(jì)算機(jī)上某個(gè)進(jìn)程的標(biāo)識(shí)符)。
- GetProcesses() 為本地計(jì)算機(jī)上的每個(gè)進(jìn)程資源創(chuàng)建一個(gè)新的 Process 組件。
- GetProcessesByName(String) 創(chuàng)建新的 Process 組件的數(shù)組,并將它們與本地計(jì)算機(jī)上共享指定的進(jìn)程名稱(chēng)的所有進(jìn)程資源關(guān)聯(lián)。
- Kill() 立即停止關(guān)聯(lián)的進(jìn)程。
- Start() 啟動(dòng)(或重用)此 Process 組件的 StartInfo 屬性指定的進(jìn)程資源,并將其與該組件關(guān)聯(lián)。
- WaitForExit(Int32) 指示 Process 組件在指定的毫秒數(shù)內(nèi)等待關(guān)聯(lián)進(jìn)程退出。
二、使用方法
1、建立和銷(xiāo)毀進(jìn)程 System.Diagnosties
System.Diagnostics.Process p=Process.Start("notepad.exe","File.txt"); Thread.Sleep(2000); p.Kill();
2、后臺(tái)運(yùn)行進(jìn)程:
ProcessStartInfo psi = new ProcessStartInfo("cmd.exe"); psi.Arguments = @"/c copy c:\1.txt lpt1"; psi.CreateNoWindow = true; psi.UseShellExecute = false;//默認(rèn)為true, 使用外殼程序啟動(dòng)進(jìn)程。否則,直接從可執(zhí)行文件創(chuàng)建進(jìn)程。 Process p = Process.Start(psi); if (!p.WaitForExit(1000 * 7))//啟動(dòng)外部程序,等待其退出 { p.Kill(); } p.Close();
或者
ProcessStartInfo psi = new ProcessStartInfo("cmd.exe");//FileName psi.RedirectStandardInput = true; psi.RedirectStandardOutput = true; psi.CreateNoWindow = true;//將此屬性設(shè)置為false,就能重定向進(jìn)程。。。 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、啟動(dòng)外部程序
System.Diagnostics.Process.Start("explorer.exe", @"c:/"); //用資源管理器打開(kāi)C:/ System.Diagnostics.Process.Start("rundll32.exe", @"shell32.dll,Control_RunDLL appwiz.cpl,,0");//打開(kāi)“添加或刪除程序”的面板:
4、列舉計(jì)算機(jī)中運(yùn)行中的進(jìn)程
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、獲取進(jìn)程中的多個(gè)模塊
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)); }
到此這篇關(guān)于C#操作windows系統(tǒng)進(jìn)程的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 如何在C# 中查找或結(jié)束程序域中的主、子進(jìn)程
- C#操作進(jìn)程的方法介紹
- C#獲取所有進(jìn)程的方法
- C#中進(jìn)程的掛起與恢復(fù)
- C#實(shí)現(xiàn)啟動(dòng),關(guān)閉與查找進(jìn)程的方法
- C#實(shí)現(xiàn)關(guān)閉其他程序窗口或進(jìn)程代碼分享
- C#實(shí)現(xiàn)強(qiáng)制關(guān)閉當(dāng)前程序進(jìn)程
- C#關(guān)閉指定名字進(jìn)程的方法
- C#實(shí)現(xiàn)查殺本地與遠(yuǎn)程進(jìn)程的方法
- C#操作windows系統(tǒng)進(jìn)程的方法
- C#結(jié)束進(jìn)程及子進(jìn)程
相關(guān)文章
user32.dll 函數(shù)說(shuō)明小結(jié)
這篇文章主要介紹了user32.dll 函數(shù)說(shuō)明,需要的朋友可以參考下2018-06-06c#求點(diǎn)到直線的投影點(diǎn)坐標(biāo)
這篇文章主要介紹了c#求直線外一點(diǎn)到該直線的投影點(diǎn),大家參考使用吧2013-12-12Entity?Framework映射TPH、TPT、TPC與繼承類(lèi)
這篇文章介紹了Entity?Framework映射TPH、TPT、TPC與繼承類(lèi),文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06C#中單問(wèn)號(hào)(?)和雙問(wèn)號(hào)(??)的用法整理
本文詳細(xì)講解了C#中單問(wèn)號(hào)(?)和雙問(wèn)號(hào)(??)的用法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05C# Dynamic關(guān)鍵字之:調(diào)用屬性、方法、字段的實(shí)現(xiàn)方法
本篇文章是對(duì)C#中調(diào)用屬性、方法、字段的實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05C#開(kāi)發(fā)簡(jiǎn)易winform計(jì)算器程序
這篇文章主要為大家詳細(xì)介紹了C#開(kāi)發(fā)簡(jiǎn)易winform計(jì)算器程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02C#實(shí)現(xiàn)將數(shù)組內(nèi)元素打亂順序的方法
這篇文章主要介紹了C#實(shí)現(xiàn)將數(shù)組內(nèi)元素打亂順序的方法,涉及C#數(shù)組遍歷及隨機(jī)數(shù)操作的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08