C#使用Process类调用外部程序分解

 更新时间:2014年07月03日 10:03:43   投稿:junjie  
这篇文章主要介绍了C#使用Process类调用外部程序分解,分别介绍了启动外部程序、关掉外部程序、关掉后调用一些方法的方法,需要的朋友可以参考下

在程序开发中,一个程序经常需要去调用其他的程序,C#中Process类正好提供了这样的功能。它提供对本地和远程进程的访问并使您能够启动和停止本地系统进程。

一、启动进程实例

复制代码 代码如下:

Process myProcess = new Process();  
try 
{  
    myProcess.StartInfo.UseShellExecute = false;  
    myProcess.StartInfo.FileName = "test.exe";  
    myProcess.StartInfo.CreateNoWindow = true;  
    myProcess.Start();  
}  
catch (Exception e)  
{  
    Console.WriteLine(e.Message);  

Process.Start 方法,启动(或重用)此 Process 组件的 StartInfo 属性指定的进程资源,并将其与该组件关联。如果启动了进程资源,则为 true;如果没有启动新的进程资源(例如,如果重用了现有进程),则为 false。

Process.StartInfo 属性,获取或设置要传递给 Process 的 Start 方法的属性。StartInfo 表示用于启动进程的一组参数。 调用 Start 时,StartInfo 用于指定要启动的进程。 唯一必须设置的 StartInfo 成员是 FileName 属性。

ProcessStartInfo.FileName 属性,获取或设置要启动的应用程序或文档。FileName 属性不需要表示可执行文件。 它可以是其扩展名已经与系统上安装的应用程序关联的任何文件类型。

ProcessStartInfo.CreateNoWindow属性,获取或设置指示是否在新窗口中启动该进程的值。

二、关掉启动进程

Process.Kill 方法,立即停止关联的进程。Kill 强制终止进程,Kill 方法将异步执行。 在调用 Kill 方法后,请调用 WaitForExit 方法等待进程退出,或者检查 HasExited 属性以确定进程是否已经退出。

三、进程结束后调用其他方法

在调用某个进程结束后,我们通常需要执行其他的方法,比如,在做安装程序时,需要先判断.Net Framework环境是否安装,若未安装,则先调用.NET Framework安装程序后,继续运行安装程序方法。
通常这种情况下,有两种方法:

方法一:WaitForExit()方法。这种方法会阻塞当前进程,直到运行的外部程序退出。

复制代码 代码如下:
System.Diagnostics.Process exep = System.Diagnostics.Process.Start(@"C:\Windows\Notepad.exe");  
exep.WaitForExit();//关键,等待外部程序退出后才能往下执行  
MessageBox.Show("Notepad.exe运行完毕");

上述代码在Notepad.exe记事本结束之后,弹出对话框。

方法二:Exited 事件。为外部进程添加一个事件监视器,当退出后,获取通知,这种方法时不会阻塞当前进程,你可以处理其它事情。

复制代码 代码如下:
System.Diagnostics.Process exep = new System.Diagnostics.Process();  
exep.StartInfo.FileName = @"C:\Windows\Notepad.exe";  
exep.EnableRaisingEvents = true;  
exep.Exited += new EventHandler(exep_Exited);  
exep.Start();  
 
void exep_Exited(object sender, EventArgs e)  
{  
MessageBox.Show("Notepad.exe运行完毕");  

在事件结束之后,调用Exited 事件方法。

对于在C#程序开发中调用外部程序的操作,要判断这个被调用的EXE文件是否执行结束其实最跟本的是 System.Diagnostics.Process类的应用,其中有一个方法,就是WaitForExit();和HasExited属性,这两个也 都是为判断外部程序exe文件的执行状态而设计的,HasExited=ture时表示执行结束.

相关文章

  • C# 网络编程之UDP

    C# 网络编程之UDP

    这篇文章主要介绍了C# 网络编程之UDP的相关资料,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下
    2021-02-02
  • C#调用外部程序的三种实现方式的示例

    C#调用外部程序的三种实现方式的示例

    在C#中调用外部程序通常有几种方式,本文将介绍其中的三种主要方法:System.Diagnostics.Process 类、System.Shell类以及使用C#的System.Diagnostics.ProcessStartInfo类与System.Diagnostics.Process 类结合,感兴趣的可以了解一下
    2025-05-05
  • Winform中GridView分组排序功能实现方法

    Winform中GridView分组排序功能实现方法

    这篇文章主要介绍了Winform中GridView分组排序功能实现方法,以实例形式详细说明了分组排序的实现方法,并附带完整的DBHelp类代码,是非常实用的技巧,需要的朋友可以参考下
    2014-11-11
  • WCF如何使用动态代理精简代码架构

    WCF如何使用动态代理精简代码架构

    这篇文章主要介绍了WCF如何使用动态代理精简代码架构,帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下
    2021-03-03
  • C#调用OpenCV开发简易版美图工具【推荐】

    C#调用OpenCV开发简易版美图工具【推荐】

    本文主要介绍在WPF项目中使用OpenCVSharp3-AnyCPU开源类库处理图片,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友参考下吧
    2019-10-10
  • 详解C#中的委托

    详解C#中的委托

    本文主要介绍了C#中委托的相关知识。具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • unity实现文字滚动效果

    unity实现文字滚动效果

    这篇文章主要为大家详细介绍了unity实现文字滚动效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-02-02
  • 在.NET平台使用C#为PDF添加各种类型的表单域的方法

    在.NET平台使用C#为PDF添加各种类型的表单域的方法

    在日常办公系统开发中,涉及 PDF 处理相关的开发时,生成可填写的 PDF 表单是一种常见需求,与静态 PDF 不同,带有**表单域的文档支持用户直接在 PDF 内部输入、勾选、选择等交互操作,本文将介绍如何使用 C# 为 PDF 添加各种类型的表单域,需要的朋友可以参考下
    2025-05-05
  • C# 使用Winform 获取下拉框 选中的值

    C# 使用Winform 获取下拉框 选中的值

    这篇文章主要介绍了C# 使用Winform 获取下拉框 选中的值,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • C#实现统计100以内所有素数的个数

    C#实现统计100以内所有素数的个数

    这篇文章介绍了C#实现统计100以内所有素数个数的方法,文中注释非常详细,很适合新手学习。对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-11-11

最新评论