繼承層次結構
--------------------------------------------------------------------------------
System.Object
System.MarshalByRefObject
System.ComponentModel.Component
System.Diagnostics.Process
命名空間: System.Diagnostics
程序集: System(在 System.dll 中)
語法
--------------------------------------------------------------------------------
[PermissionSetAttribute(SecurityAction.InheritanceDemand, Name = "FullTrust")]
[HostProtectionAttribute(SecurityAction.LinkDemand, SharedState = true, Synchronization = true,
ExternalProcessMgmt = true, SelfAffectingProcessMgmt = true)]
[PermissionSetAttribute(SecurityAction.LinkDemand, Name = "FullTrust")]
public class Process : Component
Process 類型公開以下成員。
構造函數
--------------------------------------------------------------------------------
名稱 說明
Process 初始化 Process 類的新實例。
屬性
--------------------------------------------------------------------------------
名稱 說明
BasePriority 獲取關聯進程的基本優先級別。
CanRaiseEvents 獲取一個指示組件是否可以引發事件的值。 (繼承自 Component。)
Container 獲取 IContainer,它包含Component。(繼承自 Component。)
DesignMode 獲取一個值,用以指示 Component 當前是否處於設計模式。(繼承自 Component。)
EnableRaisingEvents 獲取或設置在進程終止時是否應激發 Exited 事件。
Events 獲取附加到此 Component 的事件處理程序的列表。(繼承自 Component。)
ExitCode 獲取關聯進程終止時指定的值。
ExitTime 獲取關聯進程退出的時間。
Handle 獲取關聯進程的本機句柄。
HandleCount 獲取由進程打開的句柄數。
HasExited 獲取指示關聯進程是否已終止的值。
Id 獲取關聯進程的唯一標識符。
MachineName 獲取關聯進程正在其上運行的計算機的名稱。
MainModule 獲取關聯進程的主模塊。
MainWindowHandle 獲取關聯進程主窗口的窗口句柄。
MainWindowTitle 獲取進程的主窗口標題。
MaxWorkingSet 獲取或設置關聯進程的允許的最大工作集大小。
MinWorkingSet 獲取或設置關聯進程的允許的最小工作集大小。
Modules 獲取已由關聯進程加載的模塊。
NonpagedSystemMemorySize 已過時。獲取分配給此進程的未分頁的系統內存大小。
NonpagedSystemMemorySize64 獲取為關聯的進程分配的非分頁系統內存量。
PagedMemorySize 已過時。獲取分頁的內存大小。
PagedMemorySize64 獲取為關聯的進程分配的分頁內存量。
PagedSystemMemorySize 已過時。獲取分頁的系統內存大小。
PagedSystemMemorySize64 獲取為關聯的進程分配的可分頁系統內存量。
PeakPagedMemorySize 已過時。獲取峰值分頁內存大小。
PeakPagedMemorySize64 獲取關聯的進程使用的虛擬內存分頁文件中的最大內存量。
PeakVirtualMemorySize 已過時。獲取峰值虛擬內存大小。
PeakVirtualMemorySize64 獲取關聯的進程使用的最大虛擬內存量。
PeakWorkingSet 已過時。獲取關聯進程的峰值工作集大小。
PeakWorkingSet64 獲取關聯的進程使用的最大物理內存量。
PriorityBoostEnabled 獲取或設置一個值,該值指示主窗口擁有焦點時是否由操作系統暫時提升關聯進程的優先級別。
PriorityClass 獲取或設置關聯進程的總體優先級別類別。
PrivateMemorySize 已過時。獲取專用內存大小。
PrivateMemorySize64 獲取為關聯的進程分配的專用內存量。
PrivilegedProcessorTime 獲取此進程的特權處理器時間。
ProcessName 獲取該進程的名稱。
ProcessorAffinity 獲取或設置一些處理器,此進程中的線程可以按計劃在這些處理器上運行。
Responding 獲取指示進程的用戶界面當前是否響應的值。
SessionId 獲取關聯的進程的終端服務會話標識符。
Site 獲取或設置 Component 的ISite。(繼承自 Component。)
StandardError 獲取用於讀取應用程序錯誤輸出的流。
StandardInput 獲取用於寫入應用程序輸入的流。
StandardOutput 獲取用於讀取應用程序輸出的流。
StartInfo 獲取或設置要傳遞給 Process 的Start 方法的屬性。
StartTime 獲取關聯進程啟動的時間。
SynchronizingObject 獲取或設置用於封送由於進程退出事件而發出的事件處理程序調用的對象。
Threads 獲取在關聯進程中運行的一組線程。
TotalProcessorTime 獲取此進程的總的處理器時間。
UserProcessorTime 獲取此進程的用戶處理器時間。
VirtualMemorySize 已過時。獲取進程的虛擬內存大小。
VirtualMemorySize64 獲取為關聯的進程分配的虛擬內存量。
WorkingSet 已過時。獲取關聯進程的物理內存使用情況。
WorkingSet64 獲取為關聯的進程分配的物理內存量。
方法
--------------------------------------------------------------------------------
名稱 說明
BeginErrorReadLine 在應用程序的重定向 StandardError 流上開始進行異步讀取操作。
BeginOutputReadLine 在應用程序的重定向 StandardOutput 流上開始異步讀取操作。
CancelErrorRead 取消在應用程序的重定向 StandardError 流上執行的異步讀取操作。
CancelOutputRead 取消在應用程序的重定向 StandardOutput 流上的異步讀取操作。
Close 釋放與此組件關聯的所有資源。
CloseMainWindow 通過向進程的主窗口發送關閉消息來關閉擁有用戶界面的進程。
CreateObjRef 創建一個對象,該對象包含生成用於與遠程對象進行通信的代理所需的全部相關信息。(繼承自 MarshalByRefObject。)
Dispose() 釋放由 Component 使用的所有資源。(繼承自 Component。)
Dispose(Boolean) 基礎結構。釋放此進程使用的所有資源。 (重寫 Component.Dispose(Boolean)。)
EnterDebugMode 通過啟用當前線程的本機屬性 SeDebugPrivilege,將Process 組件置於與以特殊模式運行的操作系統進程交互的狀態。
Equals(Object) 確定指定的 Object 是否等於當前的Object。(繼承自 Object。)
Finalize 在通過垃圾回收將 Component 回收之前,釋放非托管資源並執行其他清理操作。(繼承自 Component。)
GetCurrentProcess 獲取新的 Process 組件並將其與當前活動的進程關聯。
GetHashCode 用作特定類型的哈希函數。 (繼承自 Object。)
GetLifetimeService 檢索控制此實例的生存期策略的當前生存期服務對象。 (繼承自 MarshalByRefObject。)
GetProcessById(Int32) 返回新的 Process 組件(給定本地計算機上某個進程的標識符)。
GetProcessById(Int32, String) 返回新的 Process 組件(給定進程標識符和網絡中計算機的名稱)。
GetProcesses() 為本地計算機上的每個進程資源創建一個新的 Process 組件。
GetProcesses(String) 為指定計算機上的每個進程資源創建一個新的 Process 組件。
GetProcessesByName(String) 創建新的 Process 組件的數組,並將它們與本地計算機上共享指定的進程名稱的所有進程資源關聯。
GetProcessesByName(String, String) 創建新的 Process 組件的數組,並將它們與遠程計算機上共享指定進程名稱的所有進程資源關聯。
GetService 返回一個對象,該對象表示由 Component 或它的Container 提供的服務。(繼承自 Component。)
GetType 獲取當前實例的 Type。(繼承自 Object。)
InitializeLifetimeService 獲取控制此實例的生存期策略的生存期服務對象。 (繼承自MarshalByRefObject。)
Kill 立即停止關聯的進程。
LeaveDebugMode 使 Process 組件離開允許它與以特殊模式運行的操作系統進程交互的狀態。
MemberwiseClone() 創建當前 Object 的淺表副本。(繼承自 Object。)
MemberwiseClone(Boolean) 創建當前 MarshalByRefObject 對象的淺表副本。(繼承自 MarshalByRefObject。)
OnExited 引發 Exited 事件。
Refresh 放棄有關關聯進程的、已緩存到該進程組件內的任何信息。
Start() 啟動(或重用)此 Process 組件的StartInfo 屬性指定的進程資源,並將其與該組件關聯。
Start(ProcessStartInfo) 啟動由包含進程啟動信息(例如,要啟動的進程的文件名)的參數指定的進程資源,並將該資源與新的Process 組件關聯。
Start(String) 通過指定文檔或應用程序文件的名稱來啟動進程資源,並將資源與新的 Process 組件關聯。
Start(String, String) 通過指定應用程序的名稱和一組命令行參數來啟動一個進程資源,並將該資源與新的 Process 組件相關聯。
Start(String, String, SecureString, String) 通過指定應用程序的名稱、用戶名、密碼和域來啟動一個進程資源,並將該資源與新的Process 組件關聯起來。
Start(String, String, String, SecureString, String) 通過指定應用程序的名稱、一組命令行參數、用戶名、密碼和域來啟動一個進程資源,並將該資源與新的Process 組件關聯起來。
ToString 如果適用,則將進程的名稱格式化為字符串,並與父組件的類型組合。(重寫 Component.ToString()。)
WaitForExit() 指示 Process 組件無限期地等待關聯進程退出。
WaitForExit(Int32) 指示 Process 組件在指定的毫秒數內等待關聯進程退出。
WaitForInputIdle() 使 Process 組件無限期地等待關聯進程進入空閒狀態。此重載僅適用於具有用戶界面並因此具有消息循環的進程。
WaitForInputIdle(Int32) 使 Process 組件在指定的毫秒數內等待關聯進程進入空閒狀態。此重載僅適用於具有用戶界面並因此具有消息循環的進程。
事件
--------------------------------------------------------------------------------
名稱 說明
Disposed 當通過調用 Dispose 方法釋放組件時發生。(繼承自 Component。)
ErrorDataReceived 當應用程序寫入其重定向 StandardError 流中時發生。
Exited 在進程退出時發生。
OutputDataReceived 當應用程序寫入其重定向 StandardOutput 流中時發生。
備注
--------------------------------------------------------------------------------
注意
從 .NET Framework 2.0 版開始,很多 .NET Framework 方法和屬性就已去除了引用其他計算機上的性能計數器數據的功能。此項更改提高了性能,還使非管理員可以使用 Process 類。因此,在 .NET Framework 早期版本中獲取不到異常的一些應用程序現在可以獲取 NotSupportedException。受影響的方法和屬性的數目過於龐大,以至於無法在此列出,但是已經將異常信息添加到受影響成員的主題中。
Process 組件提供對正在計算機上運行的進程的訪問。用最簡短的話來說,進程就是當前運行的應用程序。 線程是操作系統向其分配處理器時間的基本單位。 線程可執行進程的任何一部分代碼,包括當前由另一線程執行的部分。
對於啟動、停止、控制和監視應用程序等任務,Process 組件是很有用的工具。使用 Process 組件,可以獲取正在運行的進程的列表,或者可以啟動新的進程。Process 組件用於訪問系統進程。初始化 Process 組件後,可使用該組件來獲取有關當前運行的進程的信息。此類信息包括線程集、加載的模塊(.dll 和 .exe 文件)和性能信息(如進程當前使用的內存量)。
如果在系統中用引號聲明了一個路徑變量,則在啟動該位置中的任何進程時,必須完全限定該路徑。否則,系統將找不到該路徑。 例如,如果 c:\mypath 不在您的路徑中,而您使用引號添加它 (path = %path%;"c:\mypath"),則在啟動c:\mypath 中的任何進程時,您必須完全限定它們。
進程組件同時獲取有關一組屬性的信息。 Process 組件獲取有關任一組的一個成員的信息後,它將緩存該組中其他屬性的值,並且在您調用Refresh 方法之前,不獲取有關該組中其他成員的新信息。因此,不保證屬性值比對 Refresh 方法的最後一次調用更新。組細分與操作系統有關。
系統進程在系統上由其進程標識符唯一標識。 與許多 Windows 資源一樣,進程也由其句柄標識,而句柄在計算機上可能不唯一。 句柄是表示資源標識符的一般術語。 即使進程已退出,操作系統仍保持進程句柄,該句柄通過Process 組件的 Handle 屬性訪問。因此,可以獲取進程的管理信息,如 ExitCode(通常,或者為零表示成功,或者為非零錯誤代碼)和ExitTime。句柄是非常有價值的資源,所以句柄洩漏比內存洩漏危害更大。
注意
此類在應用於所有成員的類級別上包含一個鏈接要求和一個繼承要求。 如果直接調用方或派生類不具有完全信任權限,則會引發 SecurityException。有關安全要求的詳細信息,請參見鏈接需求和繼承需求。
注意
應用到此類型或成員的 HostProtectionAttribute 特性具有以下 Resources 屬性值:SharedState | Synchronization | ExternalProcessMgmt | SelfAffectingProcessMgmt。HostProtectionAttribute 不影響桌面應用程序(桌面應用程序一般通過雙擊圖標、鍵入命令或在浏覽器中輸入 URL 啟動)。有關更多信息,請參見 HostProtectionAttribute 類或 SQL Server 編程和宿主保護特性。
示例
--------------------------------------------------------------------------------
下面的示例使用 Process 類的實例啟動進程。
using System;
using System.Diagnostics;
using System.ComponentModel;
namespace MyProcessSample
{
class MyProcess
{
public static void Main()
{
Process myProcess = new Process();
try
{
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);
}
}
}
}
下面的示例使用 Process 類本身和靜態Start 方法啟動進程。
using System;
using System.Diagnostics;
using System.ComponentModel;
namespace MyProcessSample
{
class MyProcess
{
// Opens the Internet Explorer application.
void OpenApplication(string myFavoritesPath)
{
// Start Internet Explorer. Defaults to the home page.
Process.Start("IExplore.exe");
// Display the contents of the favorites folder in the browser.
Process.Start(myFavoritesPath);
}
// Opens urls and .html documents using Internet Explorer.
void OpenWithArguments()
{
// url's are not considered documents. They can only be opened
// by passing them as arguments.
Process.Start("IExplore.exe", "www.northwindtraders.com");
// Start a Web page using a browser associated with .html and .asp files.
Process.Start("IExplore.exe", "C:\\myPath\\myFile.htm");
Process.Start("IExplore.exe", "C:\\myPath\\myFile.asp");
}
// Uses the ProcessStartInfo class to start new processes,
// both in a minimized mode.
void OpenWithStartInfo()
{
ProcessStartInfo startInfo = new ProcessStartInfo("IExplore.exe");
startInfo.WindowStyle = ProcessWindowStyle.Minimized;
Process.Start(startInfo);
startInfo.Arguments = "www.northwindtraders.com";
Process.Start(startInfo);
}
static void Main()
{
// Get the path that stores favorite links.
string myFavoritesPath =
Environment.GetFolderPath(Environment.SpecialFolder.Favorites);
MyProcess myProcess = new MyProcess();
myProcess.OpenApplication(myFavoritesPath);
myProcess.OpenWithArguments();
myProcess.OpenWithStartInfo();
}
}
}
版本信息
--------------------------------------------------------------------------------
.NET Framework
受以下版本支持:4、3.5、3.0、2.0、1.1、1.0
.NET Framework Client Profile
受以下版本支持:4、3.5 SP1
.NET Framework 安全性
--------------------------------------------------------------------------------
LinkDemand
用於完全信任直接調用方。 此類不能由部分受信任的代碼使用。
InheritanceDemand
用於完全信任繼承者。 此類不能由部分受信任的代碼繼承。
平台 www.2cto.com--------------------------------------------------------------------------------
Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服務器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服務器核心), Windows Server 2003 SP2
.NET Framework 並不是對每個平台的所有版本都提供支持。有關支持的版本的列表,請參見.NET Framework 系統要求。
線程安全
--------------------------------------------------------------------------------
此類型的任何公共 static(在 Visual Basic 中為 Shared) 成員都是線程安全的。但不保證所有實例成員都是線程安全的。
作者:a125138