当前位置: 首页 > 编程笔记 >

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

上官树
2023-03-14
本文向大家介绍C#使用Process类调用外部程序分解,包括了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#使用Process类调用外部exe程序,包括了C#使用Process类调用外部exe程序的使用技巧和注意事项,需要的朋友参考一下 在编写程序时经常会使用到调用可执行程序的情况,本文将简单介绍C#调用exe的方法。在C#中,通过Process类来进行进程操作。 Process类在System.Diagnostics包中。 示例一 通过上述代码可以调用记事本程序,注意如果不是调用系统

  • 本文向大家介绍浅析C# 使用Process调用外部程序中所遇到的参数问题,包括了浅析C# 使用Process调用外部程序中所遇到的参数问题的使用技巧和注意事项,需要的朋友参考一下 在使用Process.Start 调用外部程序时,除了程序的地址之外,是可以传递参数的,Process.Start 也有多个重载; 其中的arguments 参数, 是有个空格的问题的, 在外部程序接收参数的 (Winf

  • 本文向大家介绍Java编程使用Runtime和Process类运行外部程序的方法,包括了Java编程使用Runtime和Process类运行外部程序的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java编程使用Runtime和Process类运行外部程序的方法。分享给大家供大家参考,具体如下: 使用Runtime.getRuntime().exec()方法可以在java程序里运行外

  • 本文向大家介绍Java如何基于ProcessBuilder类调用外部程序,包括了Java如何基于ProcessBuilder类调用外部程序的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了Java如何基于ProcessBuilder类调用外部程序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1. demo1 2. demo02 以上就

  • 本文向大家介绍C#调用执行外部程序的实现方法,包括了C#调用执行外部程序的实现方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#调用执行外部程序的实现方法。分享给大家供大家参考。具体分析如下: 这里以调用notepad为例演示C#调用执行外部程序的方法。 希望本文所述对大家的C#程序设计有所帮助。

  • 问题内容: 我正在使用ROS开发用于多机器人系统的GUI,但是我在界面中的最后一件事就是冻结:将RVIZ,GMAPPING或其他屏幕嵌入到我的应用程序中。我已经在界面中放置了一个终端,但是无法绕开如何向我的应用程序添加外部应用程序窗口的问题。我知道PyQt5具有createWindowContainer,它使用窗口ID来停靠外部应用程序,但是我没有找到任何示例来帮助我。 如果可能的话,我想在应用程