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

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

在C#开发过程中启动外部程序是一个比较常见的功能需求,下面介绍几种常用的启动外部程序的方法。

使用Process.Start方法启动应用程序

Process.Start 方法可以启动指定路径的应用程序,并可以向该应用程序传递参数。代码示例:

using System.Diagnostics;

Process.Start("notepad.exe", "test.txt");

上面的代码启动notepad.exe应用程序,并打开test.txt文件。

使用ShellExecuteEx方法启动应用程序

ShellExecuteEx 函数可以启动任何可执行文件,并可以在启动过程中传递命令行参数。代码示例:

using System;
using System.Diagnostics;
using System.Runtime.InteropServices;

//定义ShellExecuteInfo结构体
[StructLayout(LayoutKind.Sequential)]
public struct ShellExecuteInfo
{
    public int cbSize;
    public uint fMask;
    public IntPtr hwnd;
    public string lpVerb;
    public string lpFile;
    public string lpParameters;
    public string lpDirectory;
    public int nShow;
    public IntPtr hInstApp;
    public IntPtr lpIDList;
    public string lpClasName;
    public IntPtr hkeyClass;
    public uint dwHotKey;
    public IntPtr hIcon;
    public IntPtr hProcess;
}

public class Win32
{
    [DllImport("shell32.dll", CharSet = CharSet.Auto)]
    public static extern bool ShellExecuteEx(ref ShellExecuteInfo lpExecInfo);

    public const uint SEE_MASK_NOASYNC = 0x00000100;
    public const uint SEE_MASK_NOCLOSEPROCESS = 0x00000040;
}

//启动应用程序的方法
public bool Start(string fileName, string arguments = "")
{
    ShellExecuteInfo sei = new ShellExecuteInfo();
    sei.cbSize = Marshal.SizeOf(sei);
    sei.lpFile = fileName;
    sei.lpParameters = arguments;
    sei.nShow = 1;
    sei.fMask = Win32.SEE_MASK_NOASYNC | Win32.SEE_MASK_NOCLOSEPROCESS;
    return Win32.ShellExecuteEx(ref sei);
}

上面的代码启动了某个应用程序,并传递了命令行参数。

总结

使用 Process.Start方法和 ShellExecuteEx 方法均可用于启动外部应用程序,具体选择哪一种方式需要根据具体情况来选择。如果需要在启动过程中传递参数或者需要对应用程序进行更多控制,则建议使用 ShellExecuteEx 方法。

示例代码可在 GitHub 上获取。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#启动外部程序的几种常用方法汇总 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • C# DateTime.AddHours()方法: 将指定的小时数加到指定的日期上

    DateTime.AddHours()的作用与使用方法 DateTime.AddHours()是C#语言中的一个方法,用于给一个日期时间加上指定的小时数,并返回新的日期时间。它的基本语法如下: public DateTime AddHours(double value) 其中 value 参数表示需要增加的小时数,可以是正数、负数或零。当 value 为正数…

    C# 2023年4月19日
    00
  • C# String.Join()方法: 连接一个数组中的元素,用指定的分隔符隔开

    String.Join()方法是C#中提供的一个字符串处理方法,可用于将一个一维数组中的元素通过指定的分隔符进行连接,并返回一个新的字符串。使用String.Join()方法可以很方便地将数组中的元素拼接到一起,以便进行后续操作,例如输出、存储等。 该方法的使用格式如下: string joinedString = String.Join(separator…

    C# 2023年4月19日
    00
  • C#多线程编程Task用法详解

    C#多线程编程Task用法详解 什么是多线程编程 在计算机科学领域,多线程是同时运行多个线程的做法。线程是程序中的一条执行路径,用于执行计算或处理任务。多线程编程在某些情况下可以提高程序的性能和响应时间。多线程编程适用于需要同时处理多个任务和需要不间断运行的应用程序。 Task用法详解 Task是.NET框架中提供的一种多线程编程的方式。Task的基本概念是…

    C# 2023年6月3日
    00
  • c#使用windows服务更新站点地图的详细示例

    下面是“c#使用windows服务更新站点地图的详细示例”的完整攻略,本文将由以下几部分组成:需求分析、技术选型、开发流程和实现示例。 需求分析 我们需求是实现一个使用 Windows 服务来自动更新网站地图(SiteMap)的功能。这个服务需要能够自动遍历网站,根据业务逻辑生成站点地图,并更新网站。在此基础上,我们可以选择以特定的时间间隔来调度这个服务。 …

    C# 2023年5月31日
    00
  • ASP.NET Core扩展库之Http通用扩展库的使用详解

    ASP.NET Core扩展库之Http通用扩展库的使用详解 ASP.NET Core提供了许多扩展库,其中之一是Http通用扩展库。本攻略将详细介绍如何使用Http通用扩展库,并提供两个示例说明。 Http通用扩展库 Http通用扩展库是ASP.NET Core中的一个扩展库,它提供了许多有用的扩展方法,例如: AddHeader:添加HTTP头 AddQ…

    C# 2023年5月17日
    00
  • .net连接oracle的3种实现方法

    下面我将详细讲解“.net连接oracle的3种实现方法”的完整攻略。 1. 前言 在使用 C# 进行开发的过程中,我们常常需要连接数据库进行数据的存储、查询和更新等操作。Oracle 数据库是一个非常常见的数据库,以其高效、安全和可靠的特性被广泛使用。而 .NET 作为一种快速高效的编程语言,也能轻松连接到 Oracle 数据库。 本文将介绍 .NET 连…

    C# 2023年6月3日
    00
  • 使用c#+IMap实现收取163邮件

    接下来我将详细讲解使用c#+IMap实现收取163邮件的完整攻略,过程中将会提供两个示例。 总体思路 使用c#语言中的IMAP协议连接到163邮箱服务器,借助IMAP协议提供的标准API实现邮件收取操作。具体来说,主要分为以下3个步骤: 登录邮箱服务器 选择目标邮箱进行收取操作 获取邮件列表并解析邮件内容 下面我将对每个步骤进行详细讲解。 登录邮箱服务器 首…

    C# 2023年5月15日
    00
  • 配置Visual Studio 以调试.net framework源代码第2/2页

    下面我来详细讲解如何配置Visual Studio以调试.NET Framework源代码。 步骤1:安装“NET Reflector” 首先,我们需要安装.NET Reflector,这是一款由Red Gate开发的反编译工具,可以将.NET程序集反编译成C#或VB.NET代码。安装方法如下: 1.1 前往 https://www.red-gate.com…

    C# 2023年5月31日
    00
合作推广
合作推广
分享本页
返回顶部