C#中使用Process调取Windows中的进程(应用程序)
場景
效果
?
System.Diagnostics.Process
提供對本地和遠(yuǎn)程進(jìn)程的訪問權(quán)限并使你能夠啟動和停止本地系統(tǒng)進(jìn)程。
示例代碼
using System; using System.Diagnostics; using System.ComponentModel;namespace MyProcessSample {class MyProcess{public static void Main(){try{using (Process myProcess = new Process()){myProcess.StartInfo.UseShellExecute = false;// You can start any process, HelloWorld is a do-nothing example.myProcess.StartInfo.FileName = "C:\\HelloWorld.exe";myProcess.StartInfo.CreateNoWindow = true;myProcess.Start();// This code assumes the process you are starting will terminate itself.// Given that is is started without a window so you cannot terminate it// on the desktop, it must terminate itself or you can do it programmatically// from this application using the Kill method.}}catch (Exception e){Console.WriteLine(e.Message);}}} }
屬性
BasePriority?
獲取關(guān)聯(lián)進(jìn)程的基本優(yōu)先級。
CanRaiseEvents?
獲取一個指示組件是否可以引發(fā)事件的值。 (Inherited from Component)
Container?
獲取 IContainer,它包含 Component。 (Inherited from Component)
DesignMode?
獲取一個值,用以指示 Component 當(dāng)前是否處于設(shè)計(jì)模式。 (Inherited from Component)
EnableRaisingEvents?
獲取或設(shè)置在進(jìn)程終止時是否應(yīng)引發(fā) Exited 事件。
Events?
獲取附加到此 Component 的事件處理程序的列表。 (Inherited from Component)
ExitCode?
獲取關(guān)聯(lián)進(jìn)程終止時指定的值。
ExitTime?
獲取關(guān)聯(lián)進(jìn)程退出的時間。
Handle?
獲取關(guān)聯(lián)進(jìn)程的本機(jī)句柄。
HandleCount?
獲取由進(jìn)程打開的句柄數(shù)。
HasExited?
獲取指示關(guān)聯(lián)進(jìn)程是否已終止的值。
Id?
獲取關(guān)聯(lián)進(jìn)程的唯一標(biāo)識符。
MachineName?
獲取關(guān)聯(lián)進(jìn)程正在其上運(yùn)行的計(jì)算機(jī)的名稱。
MainModule?
獲取關(guān)聯(lián)進(jìn)程的主模塊。
MainWindowHandle?
獲取關(guān)聯(lián)進(jìn)程主窗口的窗口句柄。
MainWindowTitle?
獲取進(jìn)程的主窗口標(biāo)題。
MaxWorkingSet?
獲取或設(shè)置關(guān)聯(lián)進(jìn)程允許的最大工作集大小(以字節(jié)為單位)。
MinWorkingSet?
獲取或設(shè)置關(guān)聯(lián)進(jìn)程允許的最小工作集大小(以字節(jié)為單位)。
Modules?
獲取已由關(guān)聯(lián)進(jìn)程加載的模塊。
NonpagedSystemMemorySize?
獲取為關(guān)聯(lián)的進(jìn)程分配的非分頁系統(tǒng)內(nèi)存量(以字節(jié)為單位)。
NonpagedSystemMemorySize64?
獲取為關(guān)聯(lián)的進(jìn)程分配的非分頁系統(tǒng)內(nèi)存量(以字節(jié)為單位)。
PagedMemorySize?
獲取為關(guān)聯(lián)的進(jìn)程分配的分頁內(nèi)存量(以字節(jié)為單位)。
PagedMemorySize64?
獲取為關(guān)聯(lián)的進(jìn)程分配的分頁內(nèi)存量(以字節(jié)為單位)。
PagedSystemMemorySize?
獲取為關(guān)聯(lián)進(jìn)程分配的可分頁系統(tǒng)內(nèi)存量(以字節(jié)為單位)。
PagedSystemMemorySize64?
獲取為關(guān)聯(lián)進(jìn)程分配的可分頁系統(tǒng)內(nèi)存量(以字節(jié)為單位)。
PeakPagedMemorySize?
獲取關(guān)聯(lián)的進(jìn)程使用的虛擬內(nèi)存分頁文件中的最大內(nèi)存量(以字節(jié)為單位)。
PeakPagedMemorySize64?
獲取關(guān)聯(lián)的進(jìn)程使用的虛擬內(nèi)存分頁文件中的最大內(nèi)存量(以字節(jié)為單位)。
PeakVirtualMemorySize?
獲取關(guān)聯(lián)進(jìn)程使用的最大虛擬內(nèi)存量(以字節(jié)為單位)。
PeakVirtualMemorySize64?
獲取關(guān)聯(lián)進(jìn)程使用的最大虛擬內(nèi)存量(以字節(jié)為單位)。
PeakWorkingSet?
獲取關(guān)聯(lián)進(jìn)程的峰值工作集大小(以字節(jié)為單位)。
PeakWorkingSet64?
獲取關(guān)聯(lián)進(jìn)程使用的最大物理內(nèi)存量(以字節(jié)為單位)。
PriorityBoostEnabled?
獲取或設(shè)置一個值,該值指示主窗口擁有焦點(diǎn)時是否應(yīng)由操作系統(tǒng)暫時提升關(guān)聯(lián)進(jìn)程優(yōu)先級。
PriorityClass?
獲取或設(shè)置關(guān)聯(lián)進(jìn)程的總體優(yōu)先級類別。
PrivateMemorySize?
獲取為關(guān)聯(lián)的進(jìn)程分配的專用內(nèi)存量(以字節(jié)為單位)。
PrivateMemorySize64?
獲取為關(guān)聯(lián)的進(jìn)程分配的專用內(nèi)存量(以字節(jié)為單位)。
PrivilegedProcessorTime?
獲取此進(jìn)程的特權(quán)處理器時間。
ProcessName?
獲取該進(jìn)程的名稱。
ProcessorAffinity?
獲取或設(shè)置一些處理器,此進(jìn)程中的線程可以按計(jì)劃在這些處理器上運(yùn)行。
Responding?
獲取指示進(jìn)程的用戶界面當(dāng)前是否響應(yīng)的值。
SafeHandle?
獲取此進(jìn)程的本機(jī)句柄。
SessionId?
獲取關(guān)聯(lián)進(jìn)程的終端服務(wù)會話標(biāo)識符。
Site?
獲取或設(shè)置 Component 的 ISite。 (Inherited from Component)
StandardError?
獲取用于讀取應(yīng)用程序錯誤輸出的流。
StandardInput?
獲取用于寫入應(yīng)用程序輸入的流。
StandardOutput?
獲取用于讀取應(yīng)用程序文本輸出的流。
StartInfo?
獲取或設(shè)置要傳遞給 Process 的 Start() 方法的屬性。
StartTime?
獲取關(guān)聯(lián)進(jìn)程啟動的時間。
SynchronizingObject?
獲取或設(shè)置用于封送由于進(jìn)程退出事件而發(fā)出的事件處理程序調(diào)用的對象。
Threads?
獲取在關(guān)聯(lián)進(jìn)程中運(yùn)行的一組線程。
TotalProcessorTime?
獲取此進(jìn)程的總的處理器時間。
UserProcessorTime?
獲取此進(jìn)程的用戶處理器時間。
VirtualMemorySize?
獲取進(jìn)程的虛擬內(nèi)存大小(以字節(jié)為單位)。
VirtualMemorySize64?
獲取為關(guān)聯(lián)進(jìn)程分配的虛擬內(nèi)存量(以字節(jié)為單位)。
WorkingSet?
獲取關(guān)聯(lián)進(jìn)程的物理內(nèi)存使用量(以字節(jié)為單位)。
WorkingSet64?
獲取為關(guān)聯(lián)的進(jìn)程分配的物理內(nèi)存量(以字節(jié)為單位)。
方法
BeginErrorReadLine()?
在應(yīng)用程序的重定向 StandardError 流上開始進(jìn)行異步讀取操作。
BeginOutputReadLine()?
在應(yīng)用程序的重定向 StandardOutput 流上開始進(jìn)行異步讀取操作。
CancelErrorRead()?
取消在應(yīng)用程序的重定向 StandardError 流上執(zhí)行的異步讀取操作。
CancelOutputRead()?
取消在應(yīng)用程序的重定向 StandardOutput 流上執(zhí)行的異步讀取操作。
Close()?
釋放與此組件關(guān)聯(lián)的所有資源。
CloseMainWindow()?
通過向進(jìn)程的主窗口發(fā)送關(guān)閉消息來關(guān)閉擁有用戶界面的進(jìn)程。
CreateObjRef(Type)?
創(chuàng)建一個對象,該對象包含生成用于與遠(yuǎn)程對象進(jìn)行通信的代理所需的全部相關(guān)信息。 (Inherited from MarshalByRefObject)
Dispose(Boolean)?
釋放此進(jìn)程使用的所有資源。
EnterDebugMode()?
通過啟用當(dāng)前線程的本機(jī)屬性 Process,將 SeDebugPrivilege 組件置于與以特殊模式運(yùn)行的操作系統(tǒng)進(jìn)程交互的狀態(tài)。
Equals(Object)?
確定指定的對象是否等于當(dāng)前對象。 (Inherited from Object)
GetCurrentProcess()?
獲取新的 Process 組件并將其與當(dāng)前活動的進(jìn)程關(guān)聯(lián)。
GetHashCode()?
作為默認(rèn)哈希函數(shù)。 (Inherited from Object)
GetLifetimeService()?
檢索控制此實(shí)例的生存期策略的當(dāng)前生存期服務(wù)對象。 (Inherited from MarshalByRefObject)
GetProcessById(Int32)?
返回新的 Process 組件(給定本地計(jì)算機(jī)上某個進(jìn)程的標(biāo)識符)。
GetProcessById(Int32, String)?
返回新的 Process 組件(給定進(jìn)程標(biāo)識符和網(wǎng)絡(luò)中計(jì)算機(jī)的名稱)。
GetProcesses()?
為本地計(jì)算機(jī)上的每個進(jìn)程資源創(chuàng)建一個新的 Process 組件。
GetProcesses(String)?
為指定計(jì)算機(jī)上的每個進(jìn)程資源創(chuàng)建一個新的 Process 組件。
GetProcessesByName(String)?
創(chuàng)建新的 Process 組件的數(shù)組,并將它們與本地計(jì)算機(jī)上共享指定的進(jìn)程名稱的所有進(jìn)程資源關(guān)聯(lián)。
GetProcessesByName(String, String)?
創(chuàng)建新的 Process 組件的數(shù)組,并將它們與遠(yuǎn)程計(jì)算機(jī)上共享指定進(jìn)程名稱的所有進(jìn)程資源關(guān)聯(lián)。
GetService(Type)?
返回一個對象,該對象表示由 Component 或它的 Container 提供的服務(wù)。 (Inherited from Component)
GetType()?
獲取當(dāng)前實(shí)例的 Type。 (Inherited from Object)
InitializeLifetimeService()?
獲取生存期服務(wù)對象來控制此實(shí)例的生存期策略。 (Inherited from MarshalByRefObject)
Kill()?
立即停止關(guān)聯(lián)的進(jìn)程。
LeaveDebugMode()?
使 Process 組件離開允許它與以特殊模式運(yùn)行的操作系統(tǒng)進(jìn)程交互的狀態(tài)。
MemberwiseClone()?
創(chuàng)建當(dāng)前 Object 的淺表副本。 (Inherited from Object)
MemberwiseClone(Boolean)?
創(chuàng)建當(dāng)前 MarshalByRefObject 對象的淺表副本。 (Inherited from MarshalByRefObject)
OnExited()?
引發(fā) Exited 事件。
Refresh()?
放棄已緩存到進(jìn)程組件的關(guān)聯(lián)僅存的任何相關(guān)信息。
Start()?
啟動(或重用)此 Process 組件的 StartInfo 屬性指定的進(jìn)程資源,并將其與該組件關(guān)聯(lián)。
Start(ProcessStartInfo)?
啟動由包含進(jìn)程啟動信息(例如,要啟動的進(jìn)程的文件名)的參數(shù)指定的進(jìn)程資源,并將該資源與新的 Process 組件關(guān)聯(lián)。
Start(String)?
通過指定文檔或應(yīng)用程序文件的名稱來啟動進(jìn)程資源,并將資源與新的 Process 組件關(guān)聯(lián)。
Start(String, String)?
通過指定應(yīng)用程序的名稱和一組命令行參數(shù)來啟動一個進(jìn)程資源,并將該資源與新的 Process 組件相關(guān)聯(lián)。
Start(String, String, SecureString, String)?
通過指定應(yīng)用程序的名稱、用戶名、密碼和域來啟動一個進(jìn)程資源,并將該資源與新的 Process 組件關(guān)聯(lián)起來。
Start(String, String, String, SecureString, String)?
通過指定應(yīng)用程序的名稱、一組命令行自變量、用戶名、密碼和域來啟動一個進(jìn)程資源,并將該資源與新的 Process 組件關(guān)聯(lián)起來。
ToString()?
如果適用,則將進(jìn)程的名稱格式化為字符串,并與父組件類型組合。
WaitForExit()?
指示 Process 組件無限期地等待關(guān)聯(lián)進(jìn)程退出。
WaitForExit(Int32)?
指示 Process 組件在指定的毫秒數(shù)內(nèi)等待關(guān)聯(lián)進(jìn)程退出。
WaitForInputIdle()?
使 Process 組件無限期地等待關(guān)聯(lián)進(jìn)程進(jìn)入空閑狀態(tài)。 此重載僅適用于具有用戶界面并因此具有消息循環(huán)的進(jìn)程。
WaitForInputIdle(Int32)?
使 Process 組件在指定的毫秒數(shù)內(nèi)等待關(guān)聯(lián)進(jìn)程進(jìn)入空閑狀態(tài)。 此重載僅適用于具有用戶界面并因此具有消息循環(huán)的進(jìn)程。
事件
Disposed?
當(dāng)通過調(diào)用 Dispose() 方法釋放組件時發(fā)生。 (Inherited from Component)
ErrorDataReceived?
當(dāng)應(yīng)用程序?qū)懭肫渲囟ㄏ?StandardError 流中時發(fā)生。
Exited?
在進(jìn)程退出時發(fā)生。
OutputDataReceived?
每次應(yīng)用程序向其重定向 StandardOutput 流中寫入行時發(fā)生。
實(shí)現(xiàn)
using System; using System.Collections.Generic; using System.Linq; using System.Text;namespace CallSysCalc {class Program{static void Main(string[] args){System.Diagnostics.Process pro = new System.Diagnostics.Process();//調(diào)取系統(tǒng)自帶應(yīng)用//調(diào)取計(jì)算器pro.StartInfo = new System.Diagnostics.ProcessStartInfo("calc");//調(diào)取記事本//pro.StartInfo = new System.Diagnostics.ProcessStartInfo("notepad");//調(diào)取畫圖// pro.StartInfo = new System.Diagnostics.ProcessStartInfo("mspaint");//調(diào)取遠(yuǎn)程連接//pro.StartInfo = new System.Diagnostics.ProcessStartInfo("mstsc");//完整路徑調(diào)取全路徑//pro.StartInfo = new System.Diagnostics.ProcessStartInfo(@"E:\QQ\Bin\QQScLauncher.exe");pro.Start();}} }注:
如果是系統(tǒng)自帶附件,可以直接輸入exe文件名。
如果是安裝軟件則要輸入全路徑。
怎樣查看exe文件名?
Windows-左下角-所有程序--右擊程序-屬性
?
復(fù)制器目標(biāo)路徑屬性即可。
?
示例代碼下載
https://download.csdn.net/download/badao_liumang_qizhi/11547516
總結(jié)
以上是生活随笔為你收集整理的C#中使用Process调取Windows中的进程(应用程序)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VS中调试CS程序时提示:不支持互操作调
- 下一篇: C#中实现命令行交互输入输出