zoukankan      html  css  js  c++  java
  • WinForm 应用程序中开启新的进程及控制

    在 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."); } }
  • 相关阅读:
    JDBC 基本语法总结
    MySQL 基本语法
    mysql学习第三天练习(日期和时间函数)
    mysql学习第三天练习(流程控制函数)
    mysql学习第三天笔记
    mysql学习第二天函数
    mysql学习第一天select
    mysql学习第一天
    Java石头剪刀布小游戏
    Java万年历
  • 原文地址:https://www.cnblogs.com/SkySoot/p/2263605.html
Copyright © 2011-2022 走看看