读书人

C# 起动外部程序的几种方法

发布时间: 2012-10-14 14:55:08 作者: rapoo

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#

热点推荐