System.Diagnostics System.ComponentModel

来源:互联网 发布:巨人网络新游戏 编辑:程序博客网 时间:2024/06/10 00:39
using System;using System.Collections.Generic;using System.Linq;using System.Text;// Process(进程类),ProcessStartInfo(进程启动信息),ProcessModule(进程模块)// 位于System.Diagnostics命名空间中.ProcessStartInfo是一个独立的类,// Process和ProcessModule的基类都为System.ComponentModel中的Component// Process类(组件)提供对正在计算机上运行的进程的访问,可用来启动、停止、控制和监视// 应用程序等任务。使用Process组件,可以获取正在运行的进程的列表,也可以启动新的进程。// Process 类的ProcessorAffinity 属性可用于获取或设置一些处理器,此进程中的线程可// 以按计划在这些处理器上运行。其属性值为System..IntPtr类型的位掩码,表示关联进程内// 的线程可以在其上运行的处理器。默认值为2的n次方-1,其中n是计算机上的处理器数。// 这一点可用于多核编程// 可使用ProcessStartInfo类来更好地控制启动的进程。至少必须以手动方式或使用构造// 函数来设置(应用程序或文档的)文件名属性FileName。此处,将文档定义为具有与其关// 联的打开或默认操作的任何文件类型。使用操作系统提供的“文件夹选项”对话框,可以查// 看计算机中已注册的文件类型及其相关应用程序。单击“高级”按钮可打开一个对话框,其// 中显示了是否存在与特定注册文件类型相关联的打开操作。// 另外,还可使用ProcessStartInfo类来设置定义要对该文件执行的操作的其他属性。可// 以为Verb属性指定特定于FileName属性的类型的值。例如,可以为文档类型指定“print”。// 另外,还可以指定  Arguments属性值,这些值将成为传递给文件的打开过程的命令行参数。// 例如,如果在FileName属性中指定一个文本编辑器应用程序,则可以使用Arguments属性// 指定将用该编辑器打开的一个文本文件。 // 在进程启动前,可更改任何ProcessStartInfo 属性的值。而启动进程后,更改这些值是// 没有效果的。// ProcessModule类表示加载到特定进程中的.dll或.exe文件。每个进程包含一个或多个模块// 可用该类来获取进程中模块的信息.using System.Diagnostics;using System.ComponentModel;namespace MyProcessSample{    class MyProcess    {        // These are the Win32 error code for file not found or access denied.        const int ERROR_FILE_NOT_FOUND = 2;        const int ERROR_ACCESS_DENIED = 5;        // Prints a file with a.doc extension.        void PrintDoc()        {            Process myProcess = new Process();            try{                // Get the path that stores user documents.                string myDocumentPath =                    Environment.GetFolderPath(Environment.SpecialFolder.Personal);                myProcess.StartInfo.FileName = "D:\\MyFile.doc";                myProcess.StartInfo.Verb = "Print";                myProcess.StartInfo.CreateNoWindow = true;                myProcess.Start();            }catch(Win32Exception e)            {                if (e.NativeErrorCode == ERROR_FILE_NOT_FOUND)                    Console.WriteLine(e.Message + ".Check the path");                else if (e.NativeErrorCode == ERROR_ACCESS_DENIED)                    Console.WriteLine(e.Message + ".You do not have permission to print this file.");            }        }        public static void Main()        {            MyProcess myProcess = new MyProcess();            myProcess.PrintDoc();        }    }}
原创粉丝点击