基础知识介绍:
Process类
提供对本地和远程进程的访问并使您能够启动和停止本地系统进程
命名空间:System.Diagnostics
程序集:System(在System.dll中)
语法:public class Process : Component
Process.Start方法(ProcessStartInfo)
启动由包含进程启动信息(例如,要启动的进程的文件名)的参数指定的进程资源,并将该资源与新的Process组件关联 语法:public static Process Start(ProcessStartInfo startInfo)
Process 组件提供对正在计算机上运行的进程的访问。 用最简短的话来说,进程就是当前运行的应用程序。线程是操作系统向其分配处理器时间的基本单位。线程可执行进程的任何一部分代码,包括当前由另一线程执行的部分。
对于启动、停止、控制和监视应用程序等任务, Process 组件是很有用的工具。 使用 Process 组件,可以获取正在运行的进程的列表,或者可以启动新的进程。 Process 组件用于访问系统进程。 初始化 Process 组件后,可使用该组件来获取有关当前运行的进程的信息。 此类信息包括线程集、加载的模块(.dll 和 .exe 文件)和性能信息(如进程当前使用的内存量)。
如果在系统中用引号声明了一个路径变量,则在启动该位置中的任何进程时,必须完全限定该路径。否则,系统将找不到该路径。例如,如果 c:\mypath 不在您的路径中,而您使用引号添加它 ( path = %path%;”c:\mypath”),则在启动 c:\mypath 中的任何进程时,您必须完全限定它们。
进程组件同时获取有关一组属性的信息。Process 组件获取有关任一组的一个成员的信息后,它将缓存该组中其他属性的值,并且在您调用 Refresh 方法之前,不获取有关该组中其他成员的新信息。 因此,不保证属性值比对 Refresh 方法的最后一次调用更新。 组细分与操作系统有关。
系统进程在系统上由其进程标识符唯一标识。与许多 Windows 资源一样,进程也由其句柄标识,而句柄在计算机上可能不唯一。句柄是表示资源标识符的一般术语。即使进程已退出,操作系统仍保持进程句柄,该句柄通过 Process 组件的 Handle 属性访问。 因此,可以获取进程的管理信息,如 ExitCode(通常,或者为零表示成功,或者为非零错误代码)和 ExitTime。 句柄是非常有价值的资源,所以句柄泄漏比内存泄漏危害更大。
ProcessStartInfo 类
指定启动进程时使用的一组值。
语法: public sealed class ProcessStartInfo
ProcessStartInfo.FileName 属性
获取或设置要启动的应用程序或文档
语法:public string FileName{get; set;}
ProcessStartInfo 与 Process 组件一起使用。 使用 Process 类启动进程时,您还可以访问附加到当前运行进程时可用的进程信息之外的进程信息。
可以使用 ProcessStartInfo 类来更好地控制启动的进程。 至少必须以手动方式或使用构造函数来设置 FileName 属性。 文件名是任何应用程序或文档。此处,将文档定义为具有与其关联的打开或默认操作的任何文件类型。使用操作系统提供的 “文件夹选项”对话框,可以查看计算机中已注册的文件类型及其相关应用程序。 单击 “高级”按钮可打开一个对话框,其中显示了是否存在与特定注册文件类型相关联的打开操作。
另外,还可以设置定义要对该文件执行的操作的其他属性。可以为 Verb 属性指定特定于 FileName 属性的类型的值。 例如,可以为文档类型指定“print”。另外,还可以指定 Arguments 属性值,这些值将成为传递给文件的打开过程的命令行参数。 例如,如果在 FileName 属性中指定一个文本编辑器应用程序,则可以使用 Arguments 属性指定将用该编辑器打开的一个文本文件。
标准输入方式通常为键盘,标准输出和标准错误通常显示在监视器屏幕上。但是,可以使用 RedirectStandardInput、 RedirectStandardOutput 和 RedirectStandardError 属性使进程从文件或其他设备获取输入,或者将输出返回到文件或其他设备。 如果使用 Process 组件上的 StandardInput、 StandardOutput 或 StandardError 属性,则必须首先在 ProcessStartInfo 属性上设置相应的值。 否则,从流读取或向流写入时,系统会引发异常。
设置 UseShellExecute 以指定是否使用操作系统 shell 启动进程。
可以更改任何 ProcessStartInfo 属性的值,直到进程启动为止。 启动进程后,更改这些值没有效果。
实际应用:
新建一个WPF应用程序,并在.xaml文件中添加一个button
为button添加click事件
在.cs的click函数中添加如下代码:
private void button1_Click(object sender, RoutedEventArgs e)
{
System.Diagnostics.ProcessStartInfo Info = new System.Diagnostics.ProcessStartInfo();
Info.FileName = "calc.exe ";//"calc.exe"为计算器,"notepad.exe"为记事本
System.Diagnostics.Process Proc = System.Diagnostics.Process.Start(Info);
}
运行结果: