zoukankan      html  css  js  c++  java
  • 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);

    来自:http://dotnet.chinaitlab.com/CSharp/796896.html

  • 相关阅读:
    HashMap 和 Hashtable 的区别
    使用 final 关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?
    short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
    io--文件内容的复制
    heap与stack的区别
    序列化与反序列化
    实现反转的方法(reverse)
    final, finally, finalize 的区别
    request.getSession()、reqeust.getSession(false)和request.getSession(true)
    如何优化网页的加载速度
  • 原文地址:https://www.cnblogs.com/wxfasdic/p/1685763.html
Copyright © 2011-2022 走看看