WinForm 应用程序中开启新的进程及控制

转载 2012年03月29日 15:48:56

在 Winform 里有时会需要打开另一个应用程序或文件,比如打开浏览器、打开word文档、打开文件夹和打印文件等等。本文介绍用 C# 在 Winform 中打开一个新进程,完成上述功能。

using System.Diagnostics

该命名空间提供与系统进程、事件日志、性能计数器的交互。其中与进程相关的两个基本类是 System.Diagnostics.Process 和 System.Diagnostics.ProcessStartInfo

  1. System.Diagnostics.Procss:提供对本地和远程进程的访问,并使您能够启动和停止本地系统进程.
    (1)  Start ():启动进程,主要有如下参数设置
    Start( ProcessStartInfo )
    Start( string FileName )
    Start( string FileName, string Arguments )

    (2) 属性:
    Id:唯一进程标识号
    ProcessName:进程名称
    MachineName:进程运行所在的计算机名
    StartInfo:进程的 StartInfo
    StartTime:启动进程的时间
    ExitTime:退出进程的时间
    HasExited:进程是否已经终止

  2. System.Diagnostics.ProcessStartInfo:与 Process 一起使用,为 Process 设置启动参数
    (1)  构造方法:
    ProcessStartInfo ()
    ProcessStartInfo ( string FileName )
    ProcessStartInfo ( string FileName, string Arguments)

    (2)  一些属性:
    FileName:应用程序或文件名
    Arguments:参数
    WorkingDirectory:启动进程的初始目录
    CreateNoWindow:是否在新窗口启动进程
    WindowStyle:指定打开窗口时的状态(枚举值)
    Verb:打开进程时需要使用的谓词;每个文件扩展名都有它自己的一组谓词;可以使用 Verbs 属性获取这些谓词。例如,“print”谓词将打印使用 FileName 指定的文档。可使用空字符串 ("") 指定默认谓词

 

下面用一个 WinForm 小程序来简单实现打开进程:
image

首先,引入命名空间: using System.Diagnostics;

 

(1) 打开文件


        private void btnOpenFile_Click(object sender, EventArgs e)
        {
            // 定义一个 ProcessStartInfo 实例
              ProcessStartInfo psi = new ProcessStartInfo();
            // 设置启动进程的初始目录
              psi.WorkingDirectory = Application.StartupPath;
            // 设置启动进程的应用程序或文档名
              psi.FileName = @"xwy20110619.txt";
            // 设置启动进程的参数
              psi.Arguments = "";
            //启动由包含进程启动信息的进程资源
              try
            {
                Process.Start(psi);
            }
            catch (System.ComponentModel.Win32Exception ex)
            {
                MessageBox.Show(ex.Message);
                return;
            }
        }

 

(2) 打开浏览器


        private void btnOpenIE_Click(object sender, EventArgs e)
        {
            // 启动IE进程
              Process.Start("IExplore.exe");
        }

 

(2) 打开指定 URL


        private void btnOpenUrl_Click(object sender, EventArgs e)
        {
            // 方法一 
              // 启动带参数的IE进程
              Process.Start("IExplore.exe", "http://www.cnblogs.com/SkySoot/");

            // 方法二
              // 定义一个ProcessStartInfo实例
              ProcessStartInfo startInfo = new ProcessStartInfo("IExplore.exe");
            // 设置进程参数
              startInfo.Arguments = "http://www.cnblogs.com/SkySoot/";
            // 并且使进程界面最小化
              startInfo.WindowStyle = ProcessWindowStyle.Minimized;
            // 启动进程
              Process.Start(startInfo);
        }

 

(2) 打开文件夹


        private void btnOpenFolder_Click(object sender, EventArgs e)
        {
            // 获取“收藏夹”文件路径
              string myFavoritesPath = System.Environment.GetFolderPath(Environment.SpecialFolder.Favorites);
            // 启动进程
              System.Diagnostics.Process.Start(myFavoritesPath);
        }

 

(2) 打印文档


        private void btnPrintDoc_Click(object sender, EventArgs e)
        {
            // 定义一个进程实例
              Process myProcess = new Process();
            try
            {
                // 设置进程的参数
                  string myDocumentsPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
                myProcess.StartInfo.FileName = myDocumentsPath + "\\TxtForTest.txt";
                myProcess.StartInfo.Verb = "Print";

                // 显示txt文件的所有谓词: Open,Print,PrintTo
                foreach (string v in myProcess.StartInfo.Verbs)
                {
                    MessageBox.Show(v);
                }

                // 是否在新窗口中启动该进程的值
                  myProcess.StartInfo.CreateNoWindow = true;
                // 启动进程
                  myProcess.Start();
            }
            catch (Win32Exception ex)
            {
                if (ex.NativeErrorCode == 1)
                {
                    MessageBox.Show(ex.Message + " Check the path." + myProcess.StartInfo.FileName);
                }
                else if (ex.NativeErrorCode == 2)
                {
                    MessageBox.Show(ex.Message + " You do not have permission to print this file.");
                }
            }
转自:http://www.cnblogs.com/SkySoot/archive/2011/11/25/2263605.html

WinForm 应用程序中开启新的进程及控制

在 Winform 里有时会需要打开另一个应用程序或文件,比如打开浏览器、打开word文档、打开文件夹和打印文件等等。本文介绍用 C# 在 Winform 中打开一个新进程,完成上述功能。 us...
  • CsethCRM
  • CsethCRM
  • 2014年03月12日 15:29
  • 787

Android6.0 AMS 新进程中启动Activity

看到同一个应用程序的Activity一般都是在同一个进程中启动,事实上,Activity也可以像Service一样在新的进程中启动,这样,一个应用程序就可以跨越好几个进程了,本文就分析一下在新的进程中...
  • q1183345443
  • q1183345443
  • 2016年11月15日 11:23
  • 402

Android应用程序在新的进程中启动新的Activity的方法和过程分析

http://www.blogjava.net/mixer-a/archive/2012/04/17/374976.html 前面我们在分析Activity启动过程的时候,看到同一个应用程序的Ac...
  • hjj0212
  • hjj0212
  • 2013年12月05日 12:58
  • 947

Android IPC机制(一)开启多进程

1. 为何要开启多进程 为何开启android应用要开启多进程,主要有以下几点: 单进程所分配的内存不够,需要更多的内存。在早期android系统只为一个单进程的应用分配了16M的可用内存,随着手机...
  • itachi85
  • itachi85
  • 2016年01月02日 13:44
  • 10570

给进程指定一个新的运行程序的函数exec()

一个进程调用exec()函数来运行一个新程序。之后该进程的代码段、数据段和堆栈段就被新程序的所代替。新程序从自己的main()函数开始执行。 一个 简单的exec()调用的例子 #include #...
  • Fitz1318
  • Fitz1318
  • 2017年03月02日 13:51
  • 369

C#开启新线程执行方法

1.创建新的线程并传入指定的参数 Thread thread = new Thread(new ParameterizedThreadStart(RunRefreshProjectMoneyAndO...
  • u010317783
  • u010317783
  • 2018年01月31日 12:56
  • 120

浅析startService在一个新进程中启动的流程

我们一般在写代码的时候,都会通过startService来启动一个服务,但是服务到底是怎样启动的以及startService到底做了哪些工作呢?现在就来把整个过程进行整理。 我们知道Service的...
  • hp910315
  • hp910315
  • 2015年08月09日 21:09
  • 1836

Android Handler消息机制:没有启动新的线程

先看下面的代码:System.out.println("threadName_onCreate:" + Thread.currentThread().getName()); new Ha...
  • zhangzeyuaaa
  • zhangzeyuaaa
  • 2014年08月10日 15:23
  • 823

MFC中开启新线程

AfxBeginThtead() CreateThread() CWinThread* AfxBeginThread( CRuntimeClass* pThreadClass, int...
  • happylittlestar
  • happylittlestar
  • 2011年11月09日 14:54
  • 431

【C#】程序运行时间

在.NET中我们可以用两种方法来获取程序段的运行时间,获得的结果单位是毫秒、秒。当然可以转化成其它单位。 第一种方法:根据.NET类库自带的函数。 static void Main(string[...
  • u013617144
  • u013617144
  • 2015年07月10日 11:22
  • 668
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WinForm 应用程序中开启新的进程及控制
举报原因:
原因补充:

(最多只允许输入30个字)