C#启动外部程序的几种常用方法汇总
2016-04-18 12:02
696 查看
本文汇总了C#启动外部程序的几种常用方法,非常具有实用价值,主要包括如下几种方法:
1. 启动外部程序,不等待其退出。
2. 启动外部程序,等待其退出。
3. 启动外部程序,无限等待其退出。
4. 启动外部程序,通过事件监视其退出。
实现代码如下:
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#使用process.start启动程序报错解决方法
Unknown error (0xffffffff) at System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo) at System.Diagnostics.Process.Start() at System.Diagnostics.Process.Start(ProcessStartInfo startInfo) at System.Diagnostics.Process.Start(String fileName, String arguments) at ProcessStart.Form1.start() [/code} 出错情景: 我们发现大多数情况下,C#调用Process.Start根本不会出错。这个错误通常出现在当你使用Local System帐号运行程序时,例如我们有一个windows服务,此服务调用Process.Start创建新进程时,新进程及其所有的子进程都是以System帐号运行的。这时调用Process.Start就有可能出现此错误,只是有可能,其实在我们那么多机器上只有一台运行windows 2003的服务器出现了这个错误。可能与系统设置有关,深层原因有待考察。 解决方法: 只要修改代码,设置ProcessStartInfo的UseShellExecute=false即可 [code] ProcessStartInfo psi = new ProcessStartInfo(); psi.FileName = exepath; psi.UseShellExecute = false; psi.CreateNoWindow = true; Process.Start(psi);
相关文章推荐
- C#实现软件监控外部程序运行状态的方法
- C#测量程序运行时间及cpu使用时间实例方法
- 解决C#程序只允许运行一个实例的几种方法详解
- ENVI/IDL学习笔记(一) C#与ENVI/IDL进行编程常见错误
- leetcode 14: Longest Common Prefix (C#版)
- C#-正则表达式基础
- C#下实现空白窗体中文输入
- C#—抽象类使用及方法重写与重载
- C#循环结构
- (转)C#中各种集合类比较
- c#文本复制
- C#-接口
- 浅谈Visual C#进行图像处理(读取、保存以及对像素的访问)
- C#中Dictionary的用法
- Lane Detection with OpenCV and C#
- c#中实现朗读文本功能
- c#学习笔记 day_one
- C# 匿名委托、匿名方法、匿名对象、Lambda表达式
- C#设计模式一句话总结
- c#的学习