关于.Net中Process的使用方法和各种用途汇总

发表于:2016-8-04 10:56

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:梦回今夕    来源:51Testing软件测试网采编

  简介:
  .Net中Process类功能十分强大。它可以接受程序路径启动程序,接受文件路径使用默认程序打开文件,接受超链接自动使用默认浏览器打开链接,或者打开指定文件夹等等功能。
  想要使用Process类之前,需要先引用using System.Diagnostics;
  Process类用法1:
  Process类有很多种使用方式,比如我只想打开一个应用程序的话,直接调用Process.Start("应用的路径");即可打开对用的应用程序,用默认程序打开文件,打开超链接,打开文件夹也都只用给一个路径即可。
  Process.Start("");调用之后大多数时候都会返回一个Process对象,但是参数是超链接和路径的话是不会返回Process对象的。
  Process.Start(@"C:\Users"); //使用资源管理器打开目录
  Process.Start("http://www.cnblogs.com/menghuijinxi/p/5734274.html");  //使用默认浏览器打开网页
  Process.Start(@"C:\Users\XU\Desktop\新建文本文档.txt"); //使用默认应用程序打开文件
  rocess.Start(@"G:\Unity 5.3.5f1\Editor\Unity.exe");  //打开应用程序
  Process类用法2:
  Process.Start("软件路径", "启动时传递的参数");
  此方式启动进程也很简单,第一个参数给软件的路径,第二个参数给文件路径。
  软件路径一定要是存在的路径,不然会抛异常。
  如果给的文件路径参数是错误的,而且是不受支持的话会怎么样?这里我们要详细介绍一下第二个参数的到底是什么了?我们先看下代码:
  static void Main(string[] args)
  {
  Console.ReadKey();
  }
  这段代码是控制台应用程序中的,很多学了很长时间c#的同学恐怕都还不知道上面的args参数是干嘛用的吧,平时我们通过编译器创建出的控制台应用程序默认就有这些代码,时间长了都习以为常了,也没有什么人在意这些参数的用途,不知道没关系,咱们一一道来。
  我们从Main函数开始详细讲解,Main函数是整个应用程序的入口函数这个不用多说了,程序一开始运行就是调用这个函数。Main函数其实是可以有返回值的,这返回值有什么用,还有如何获取一个进程执行完毕后的返回值这些问题暂时先不讨论。我们先讨论Main函数的参数问题,经过测试C#中的Main数有且只能有一个字符数组参数。我们来详细讲解一下这个过程,假设其他应用程序"程序1"使用Process类启动了我们写的这个应用程序"程序2"(通常是操作系统完成这项工作),并传入一个参数(Process.Start()方法的第二个参数),这个时候"程序2"的Main方法会被调用(期间怎么被调用之类的我也不是很清楚了),并且被传入一个参数(args参数),然后我们就可以获取到"程序1"传给我们的需要处理的参数了,之后我们就能随心所欲的处理这些参数了。
  所以说args参数其实就是在程序启动时或者说Main方法被调用时传入的一个参数。
  这样我们也就能理解第二个参数如果是不合法的话,会出现什么情况了吧,这就不归我们管了,这是我们调用的应用程序该处理的事情。
  static class Program
  {
  [STAThread]
  static void Main(string[] args)
  {
  Application.EnableVisualStyles();
  Application.SetCompatibleTextRenderingDefault(false);
  Application.Run(new Form1());
  }
  }
  这个是个Win32程序,Win32程序默认生成的代码并没有参数,不过不代表不支持参数,我们可以自行添加。
  Process使用方法3:
  Process.Start("应用程序名称");
  Process.Start("cmd.exe");
  Kill方法的用途和注意事项:
  在获取到返回值Process对象后我们可以通过Kill()方法结束掉该进程,调用此方法前要确保进程在运行不然会抛异常。使用Process类启动某些软件后你会发现,进程对象获取到了,而且对应的软件已经打开了,但是在结束进程时会抛"进程已停止运行的异常",这种情况是你使用Process类启动的应用程序启动了另一个应用程序并在你调用Kill方法前关闭了自己。如果不太理解这句话,我详细说来,你写了一个无窗口程序名为"程序1",然后在"程序1"中用Process类启动了另一个应用程序叫"程序2",在Process.Start("程序2");这行代码调用完后自动关闭"程序1",这样的话你用Process类启动"程序1"后又试图关闭"程序1"当然会抛异常啦。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号