简介:

  .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"); //打开cmd
Process.Start("cmd"); //打开cmd
Process.Start("notepad"); //打开记事本

  怎么样?这样子是不是跟在按Win+R键打开的运行框中输入应用名打开应用一个效果?这跟环境变量有些关系,不过经过测试即使自己在环境变量中的Path变量中加上路径,也无法通过Process.Start()打开自己的应用,应该是Process只进行了有限的封装,并不会搜索太多路径。不过我们其实是可以通过 Environment.GetEnvironmentVariable(string variable);方法获取到环境变量来自行封装的,不过不是本篇博客的讲解范围就不说了。

Process使用方法4:

  Process.Start(ProcessStartInfo stateInfo);

ProcessStartInfo state = new ProcessStartInfo(); //启动信息
state.FileName = "notepad.exe";; //设置需要启动的应用程序
state.Arguments = @"C:\Users\XU\Desktop\新建文本文档.txt"; //设置需要传递的参数u
Process.Start(state); //启动应用程序

  通过ProcessStartInfo对象启动一个应用程序,这个演示是和前面的代码一个效果的,而且写起来还很麻烦,到底有什么好处呢?第二篇博客会有一个案例为各位演示通过ProcessStartInfo对象启动一个应用程序的好处,以及必须通过ProcessStartInfo对象启动应用程序才能完成的功能。

Kill方法的用途和注意事项:

  在获取到返回值Process对象后我们可以通过Kill()方法结束掉该进程,调用此方法前要确保进程在运行不然会抛异常。使用Process类启动某些软件后你会发现,进程对象获取到了,而且对应的软件已经打开了,但是在结束进程时会抛"进程已停止运行的异常",这种情况是你使用Process类启动的应用程序启动了另一个应用程序并在你调用Kill方法前关闭了自己。如果不太理解这句话,我详细说来,你写了一个无窗口程序名为"程序1",然后在"程序1"中用Process类启动了另一个应用程序叫"程序2",在Process.Start("程序2");这行代码调用完后自动关闭"程序1",这样的话你用Process类启动"程序1"后又试图关闭"程序1"当然会抛异常啦。

  不要尝试结束系统进程或者结束受保护的进程,这样会抛异常。

  

第一篇博客到这里算是完了,多谢大家的观看。

文章原创,欢迎转载,请标明出处。

关于.Net中Process的使用方法和各种用途汇总(一):Process用法简介的更多相关文章

  1. 关于.Net中Process的使用方法和各种用途汇总(二):用Process启动cmd.exe完成将cs编译成dll

    上一章博客我为大家介绍了Process类的所有基本使用方法,这一章博客我来为大家做一个小扩展,来熟悉一下Process类的实际使用,废话不多说我们开始演示. 先看看我们的软件要设计成的布局吧. 首先我 ...

  2. 【转】python中List的sort方法(或者sorted内建函数)的用法

    原始出处:http://gaopenghigh.iteye.com/blog/1483864 python列表排序 简单记一下python中List的sort方法(或者sorted内建函数)的用法. ...

  3. python中List的sort方法的用法

    python列表排序 简单记一下python中List的sort方法(或者sorted内建函数)的用法. 关键字: python列表排序 python字典排序 sorted List的元素可以是各种东 ...

  4. C#中WinForm程序退出方法技巧总结(转)

    本文实例总结了C#中WinForm程序退出方法技巧.分享给大家供大家参考.具体分析如下: 在c#中退出WinForm程序包括有很多方法,如:this.Close(); Application.Exit ...

  5. asp.net中导出Excel的方法

    一.asp.net中导出Excel的方法: 本文转载 在asp.net中导出Excel有两种方法,一种是将导出的文件存放在服务器某个文件夹下面,然后将文件地址输出在浏览器上:一种是将文件直接将文件输出 ...

  6. asp.net中导出Execl的方法

    一.asp.net中导出Execl的方法: 在 asp.net中导出Execl有两种方法,一种是将导出的文件存放在服务器某个文件夹下面,然后将文件地址 输出在浏览器上:一种是将文件直接将文件输出流写给 ...

  7. 并发编程 process 模块的方法及运用 僵尸与孤儿

    进程创建的两种方法 Process() 继承Process 重写run方法,传参数的时候要写init,但是注意要在init方法中运行父类的init方法 Windows下写代码开启子进程时,必须写上if ...

  8. C#中WinForm程序退出方法技巧总结[转]

      这篇文章主要介绍了C#中WinForm程序退出方法,实例总结了技巧退出WinForm程序窗口的各种常用技巧,非常具有实用价值,需要的朋友可以参考下 本文实例总结了C#中WinForm程序退出方法技 ...

  9. PySpark 的背后原理--在Driver端,通过Py4j实现在Python中调用Java的方法.pyspark.executor 端一个Executor上同时运行多少个Task,就会有多少个对应的pyspark.worker进程。

    PySpark 的背后原理 Spark主要是由Scala语言开发,为了方便和其他系统集成而不引入scala相关依赖,部分实现使用Java语言开发,例如External Shuffle Service等 ...

随机推荐

  1. Help Jimmy DP

    Help Jimmy" 是在下图所示的场景上完成的游戏. 场景中包括多个长度和高度各不相同的平台.地面是最低的平台,高度为零,长度无限. Jimmy老鼠在时刻0从高于所有平台的某处开始下落, ...

  2. 静态区间第k大(主席树)

    POJ 2104为例(主席树入门题) 思想: 可持久化线段树,也叫作函数式线段树,也叫主席树(高大上). 可持久化数据结构(Persistent data structure):利用函数式编程的思想使 ...

  3. UVA 116_ Unidirectional TSP

    题意: 给定整数矩阵,从第一列的任何一个位置出发,每次可以向右.右上.右下走一个格,将最后一行和第一行看成是邻接的,最终到达最后一列,路径长度为所经过格中的整数之和,求最小路径,答案不唯一,输出字典序 ...

  4. Evaluate Reverse Polish Notation(逆波兰式)

    Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators are +, -, ...

  5. codevs 3498 小木棍

    3498 小木棍  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description 乔治有一些同样长的小木棍,他把这些木棍随意 ...

  6. Ubuntu 16.04安装7zip的图形界面工具PeaZip

    其实PeaZip不是7zip的图形界面工具,而是一整套方案,里面包括了7z格式的解压缩等. PeaZip Linux版本只有32位包,如果你使用的是64位Ubuntu系统,那么先打开终端运行下面的命令 ...

  7. Java File类 mkdir 不能创建多层目录,如果是多层,可以调mkdirs

    public static void createDir(String destDirName) { File dir = new File(destDirName); if (!dir.exists ...

  8. Utuntu下Xshell使用+vi使用

    记得上次Utuntu下Xshell环境没有搭建成功,这个又试试! 按照以前的方法测试Utuntu的ip;在本机安装Xshell 然后出现xshell连接虚拟机时,提示SSH服务器拒绝了密码 修改方法: ...

  9. Spring PropertyPlaceholderConfigure 载入配置文件

    在開始这篇博客的主题之前,我们先来了解一下Spring配置文件以及包括的相关内容. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2 ...

  10. Swift开发iOS项目实战视频教程(一)---iOS真简单

    本课主要介绍iOS项目的创建.第一个iOS项目的开发.UILabel.UIButton的使用. 假设你看完此视频还认为iOS非常难,请你来找我! 本教程摒弃枯燥的语法和知识解说,全是有趣有料的项目实战 ...