`

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

    博客分类:
  • 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#启动外部程序的几种常用方法汇总

    本文汇总了C#启动外部程序的几种常用方法,非常具有实用价值,主要包括如下几种方法: 1. 启动外部程序,不等待其退出。 2. 启动外部程序,等待其退出。 3. 启动外部程序,无限等待其退出。 4. 启动外部程序,通过...

    C#启动外部程序的几种方法.rar_littlewoo_启动外部程序

    本篇文章将详细探讨C#中启动外部程序的几种主要方法,并解释它们各自的特点和适用场景。 1. 使用`System.Diagnostics.Process.Start()`方法 这是最常用的方法,简单且功能强大。`Process.Start()`方法可以启动任何...

    C#启动外部程序框架源码(树形结构可配置)

    总结来说,"C#启动外部程序框架源码(树形结构可配置)"是一个实用的工具,它结合了`System.Diagnostics.Process`类的功能和`TreeView`控件的可视化优势,为开发者提供了一种灵活的方式来管理和启动外部程序。...

    C# 应用程序域加载外部exe到当前窗口

    总结来说,C#中的应用程序域加载外部exe到当前窗口是一种实现插件系统或扩展性机制的有效方式。通过正确地创建和管理应用程序域,可以安全地执行外部代码,并将其窗口集成到主应用程序中,同时保持代码的隔离性和...

    c# 调用外部程序,Process初体验

    通过上述介绍,我们可以看到`System.Diagnostics.Process`类为C#开发者提供了一种非常方便的方式来与外部程序进行交互。合理利用这些功能可以极大地提高开发效率,但同时也需要注意潜在的安全性和资源管理问题。希望...

    winform窗体怎么来调用外部*.exe文件

    MessageBox.Show($"无法启动外部程序:{ex.Message}"); } } ``` 这个例子中,当用户点击按钮(假设按钮的名称为btnLaunch)时,将会调用外部.exe文件。如果在启动过程中出现异常,将显示错误消息。 请注意,确保...

    C#启动进程的几种常用方法

    通常用于启动外部程序或批处理文件,并且执行完操作后立即继续执行后续代码。具体代码如下: ```csharp private void simpleRun_Click(object sender, System.EventArgs e) { System.Diagnostics.Process.Start(@"C...

    C#调用外部可执行exe文件

    Console.WriteLine("外部程序退出代码: " + exitCode); } } } ``` 在这个例子中,我们创建了一个`ProcessStartInfo`对象,设置了要执行的exe文件路径,然后通过`Process.Start`方法启动了这个程序。`...

    C#控制台实现的一个简单的守护进程程序

    2. 如果进程不存在,说明目标程序已关闭,这时守护进程需要调用Process.Start()方法,传入目标程序的路径来启动它。 3. 为了实现连续监控,可以设置一个定时器(Timer),每隔一定时间检查一次目标程序的状态。 4. ...

    防止C#应用程序被任务管理器结束

    在C#中,我们可以通过以下几种策略来实现防止应用程序被任务管理器结束: 1. **使用权限控制**:应用程序可以尝试提升其权限,使其成为管理员级别的进程。管理员权限的进程通常拥有更高的权限,更不容易被普通用户...

    C# 定时关机小程序

    虽然这个程序的实现相对简单,但它涵盖了C#编程中的几个核心概念,如使用`System.Diagnostics.Process`启动外部进程、使用`System.Timers.Timer`进行定时任务以及事件处理。对于初学者而言,这是一个很好的起点,有...

    c#winform写的balser链接程序

    2. **C#**:是一种面向对象的编程语言,由微软公司开发,常用于构建Windows平台的应用程序,包括桌面应用、游戏、服务器端应用等。C#拥有丰富的类库和强大的.NET Framework支持,非常适合开发复杂的图形用户界面...

    调用外部程序

    5. **Java的Runtime.exec()**:在Java中,可以使用`Runtime.getRuntime().exec()`方法启动外部程序,或者使用`ProcessBuilder`类进行更复杂的控制。 关于“窗体的绑定”这部分,通常是指在图形用户界面(GUI)应用...

    C#编写的服务程序(升级版)

    服务的启动类型可以通过`ServiceBase.StartType`属性设置,有以下几种类型: - `BootStart`:在操作系统启动时运行。 - `SystemStart`:在系统服务启动时运行。 - `Automatic`:在操作系统启动后,且所有依赖的...

    自己整理的一些C#的按键png,ico等一些图片,图标

    C#提供了几种方式来处理资源,包括嵌入到可执行文件中、存储在外部资源文件中,或者从网络加载。对于嵌入资源,可以使用Visual Studio的资源管理器将图片添加到项目,然后通过Resources类访问它们。例如: ```...

    C#程序(含多个Dll)合并成一个Exe的简单方法

    在C#编程中,开发人员经常需要引用外部的DLL库以增强应用程序的功能。然而,这会导致最终的可执行文件(EXE)依赖于这些DLL,使得应用程序不能独立运行。为了解决这个问题,开发者可以采用将多个DLL合并到一个EXE...

    C#编写的定时关机程序

    在学习C#和构建定时关机程序的过程中,你还需要理解以下几个关键概念: 1. **事件驱动编程**:C#中的事件处理机制,如`Elapsed`事件的订阅和触发。 2. **进程与进程间通信**:`System.Diagnostics.Process`类用于...

    C#调用DOS命令方法

    在IT领域,特别是软件开发与系统管理中,C#作为一种广泛使用的高级编程语言,提供了丰富的功能来处理各种任务,包括调用外部程序或操作系统命令。本文将深入探讨如何使用C#来调用DOS(Disk Operating System)命令,...

Global site tag (gtag.js) - Google Analytics