欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#启动外部程序的几种常用方法汇总

程序员文章站 2024-02-13 23:51:16
本文汇总了c#启动外部程序的几种常用方法,非常具有实用价值,主要包括如下几种方法: 1. 启动外部程序,不等待其退出。 2. 启动外部程序,等待其退出。 3. 启动外...

本文汇总了c#启动外部程序的几种常用方法,非常具有实用价值,主要包括如下几种方法:

1. 启动外部程序,不等待其退出。
2. 启动外部程序,等待其退出。
3. 启动外部程序,无限等待其退出。
4. 启动外部程序,通过事件监视其退出。

实现代码如下:

// using system.diagnostics;
private string appname = "calc.exe";
/// <summary>
/// 1. 启动外部程序,不等待其退出
/// </summary>
private void button1_click(object sender, eventargs e)
{
process.start(appname);
messagebox.show(string.format("外部程序 {0} 启动完成!", this.appname), this.text,
messageboxbuttons.ok, messageboxicon.information);
}
/// <summary>
/// 2. 启动外部程序,等待其退出
/// </summary>
private void button2_click(object sender, eventargs e)
{
try
{
process proc = process.start(appname);
if (proc != null)
{
proc.waitforexit(3000);
if (proc.hasexited) messagebox.show(string.format("外部程序 {0} 已经退出!", this.appname), this.text,
messageboxbuttons.ok, messageboxicon.information);
else
{
// 如果外部程序没有结束运行则强行终止之。
proc.kill();
messagebox.show(string.format("外部程序 {0} 被强行终止!", this.appname), this.text, messageboxbuttons.ok, messageboxicon.exclamation);
}
}
}
catch (argumentexception ex)
{
messagebox.show(ex.message, this.text, messageboxbuttons.ok, messageboxicon.error);
}
}
/// <summary>
/// 3. 启动外部程序,无限等待其退出
/// </summary>
private void button3_click(object sender, eventargs e)
{
try
{
process proc = process.start(appname);
if (proc != null)
{
proc.waitforexit();
messagebox.show(string.format("外部程序 {0} 已经退出!", this.appname), this.text,
messageboxbuttons.ok, messageboxicon.information);
}
}
catch (argumentexception ex)
{
messagebox.show(ex.message, this.text, messageboxbuttons.ok, messageboxicon.error);
}
}
/// <summary>
/// 4. 启动外部程序,通过事件监视其退出
/// </summary>
private void button4_click(object sender, eventargs e)
{
try
{
//启动外部程序
process proc = process.start(appname);
if (proc != null)
{
//监视进程退出
proc.enableraisingevents = true;
//指定退出事件方法
proc.exited += new eventhandler(proc_exited);
}
}
catch (argumentexception ex)
{
messagebox.show(ex.message, this.text, messageboxbuttons.ok, messageboxicon.error);
}
}
/// <summary>
///启动外部程序退出事件
/// </summary>
void proc_exited(object sender, eventargs e)
{
messagebox.show(string.format("外部程序 {0} 已经退出!", this.appname), this.text,
messageboxbuttons.ok, messageboxicon.information);

读者可以根据情况选择本文实例中的方法,希望能对大家的c#程序设计有一定的帮助借鉴作用。