C#中的Process类提供对本地和远程进程的访问,并能够启动和停止本地系统进程。
本博文使用Process类启动Adobe Reader应用程序打开指定的pdf文件并打印。
文章一开始,先给出演示程序创建的详细操作步骤。
步骤1:新建Windows窗体应用程序StartProcessExp,该程序仅包含一个名为“打开pdf文件”的按钮,点击该按钮可以启动Adobe Reader程序打开pdf文件并执行打印操作。
步骤2:编写“打开pdf文件”按钮的Click事件代码,如下所示:
private void button1_Click(object sender, EventArgs e)注意:使用Process类需要添加应用:using System.Windows.Forms;
{
Process ardProcess = new Process();
ardProcess.StartInfo.FileName = @"G:\test.pdf";
ardProcess.StartInfo.Verb = "Print";
ardProcess.StartInfo.CreateNoWindow = true;
ardProcess.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
ardProcess.Start();
}
步骤3:运行程序,单击“打开pdf文件”按钮,程序打开指定的pdf文件并打印。程序执行后的效果如下图所示。此处,弹出的“文件另存为”对话框为机器设置的虚拟打印机所弹出。若使用的是真实可用的打印机的话,就不会弹出该对话框,而是直接将文件传递给打印机进行打印。
接下来,对代码进行简单的说明。
代码中,先实例化Process 类,接着设置类的StartInfo属性,最后使用类的Start()方法启动进程。类的StartInfo属性表示用于启动线程的一组参数。调用Start()方法时,StartInfo属性用于指定要启动的进程。
- StartInfo的属性成员FileName 表示需要启动的进程,可以被设置成可执行文件,也可以被设置成其扩展名已经与系统上安装的应用程序关联的任何文件类型。本例中FileName 就被设置成pdf文件,这样调用Start()方法启动进程时,便会去启动本机已经安装的且与pdf文件相关联的默认打开程序(本机为Adobe Reader程序)。
- StartInfo的属性成员Verb 在FileName 被设置为不可执行文件时使用,当FileName 被设置成不可执行文件时,则可以包括一个谓词指定要对该文件执行什么操作,这个谓词便可以通过Verb来进行设置。本例中Verb被设置为“Print”表示打印操作。
- StartInfo的属性成员CreateNoWindow设置是否在新窗口中启动该进程的值。 若要启动该进程而不创建包含它的新窗口,则为 true;否则为 false。默认为 false。
- StartInfo的属性成员WindowStyle设置启动进程时使用的窗口状态。代码中的ProcessWindowStyle指示是在最大化窗口、最小化窗口、正常(即非最大化也非最小化)窗口还是在不可见的窗口中启动进程。默认为 normal。
通过前面的介绍,我们知道StartInfo的属性成员FileName还可以被设置成可执行文件,下面就给出这种情况下的示例代码。
private void button1_Click(object sender, EventArgs e)执行程序,结果与前次结果一致。
{
Process ardProcess = new Process();
ardProcess.StartInfo.FileName = @"C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe";
ardProcess.StartInfo.Arguments = @" /t " + @"G:\test.pdf";
ardProcess.StartInfo.CreateNoWindow = true;
ardProcess.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
ardProcess.Start();
}
此次代码与前次代码的区别是,FileName 被设置为“...\AcroRd32.exe”,这样的话Verb 属性不可用,而是通过Arguments 属性设置被打开的文件。设置Arguments 属性值时,在@"G:\test.pdf"(打开文件)前加上了@" /t ",这个是为了指示Adobe Reader程序打开文件后需要进行打印操作。
好了,就到这里了。