精品收藏---C#中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 获取或设置 ComponentISite(继承自Component。)
公共属性StandardError获取用于读取应用程序错误输出的流。
公共属性StandardInput获取用于写入应用程序输入的流。
公共属性StandardOutput获取用于读取应用程序输出的流。
公共属性StartInfo获取或设置要传递给 ProcessStart 方法的属性。
公共属性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 | SelfAffectingProcessMgmtHostProtectionAttribute 不影响桌面应用程序(桌面应用程序一般通过双击图标、键入命令或在浏览器中输入 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
  • LinkDemand

    用于完全信任直接调用方。 此类不能由部分受信任的代码使用。

  • InheritanceDemand

    用于完全信任继承者。 此类不能由部分受信任的代码继承。

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) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值