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

yizhihongxing

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日

相关文章

  • 使用DateTime的ParseExact方法实现特殊日期时间的方法详解

    让我来详细讲解下如何使用 C# 中的 DateTime.ParseExact 方法来解析特殊格式的日期时间字符串。 什么是 DateTime.ParseExact 方法? DateTime.ParseExact 是 C# 中用来将一个字符串转换成特定格式的日期时间类型的方法。这个方法的使用方式与 DateTime.Parse 很类似,但是它需要一个额外的参数…

    C# 2023年5月15日
    00
  • C#实现程序等待延迟执行的方法

    首先,C#中实现程序等待延迟执行的方法有多种,其中比较常用的有以下两种: Thread.Sleep()方法 这种方法实现起来比较简单,通过让线程休眠指定的时间(以毫秒为单位),使得程序延迟执行。示例代码如下所示: using System; using System.Threading; class Program { static void Main(st…

    C# 2023年6月1日
    00
  • .NET中的MassTransit分布式应用框架详解

    以下是“.NET中的MassTransit分布式应用框架详解”的完整攻略: 什么是MassTransit MassTransit是一个开源的分布式应用框架,用于构建可扩展的、高可用的、松耦合的分布式应用程序。它基于消息传递模式,支持多种消息传递协议,例如RabbitMQ、Azure Service Bus、Amazon SQS等。 MassTrans的核心概…

    C# 2023年5月12日
    00
  • WinForm使用DecExpress控件中的ChartControl插件绘制图表

    WinForm使用DevExpress控件中的ChartControl插件绘制图表的攻略可以分为以下几个步骤: 获取Devexpress控件和ChartControl插件首先需要去Devexpress官网下载控件和ChartControl插件,下载完成后可以进行安装和注册,然后在我们的WinForm应用程序中添加控件引用。 添加ChartControl控件到…

    C# 2023年6月1日
    00
  • C# 未将对象引用设置到对象的实例

    问题描述当我们在C#代码中遇到一个Null引用时,会提示“未将对象引用设置到对象的实例”错误。这个错误提示常常是因为我们的代码尝试操作一个不存在的对象实例引起的,那么该如何解决呢? 处理过程1. 检查代码 解决这个错误的第一步是检查代码,找出引起这个错误的具体语句。我们需要确定代码中哪一个对象为空,然后比对代码逻辑,查看是否出现了对象为NULL时的情况。比如…

    C# 2023年5月15日
    00
  • Unity3D实现虚拟按钮控制人物移动效果

    下面是“Unity3D实现虚拟按钮控制人物移动效果”的完整攻略: 需求分析 我们需要实现一个虚拟按钮,用于控制人物的移动效果,包括角色的左右移动和跳跃功能。 环境配置 首先需要创建一个Unity项目,并导入角色和场景资源。接着创建一个空的GameObject,命名为“UI”。在UI下创建一个Canvas,并调整Canvas的层级为第三层。 在Canvas下创…

    C# 2023年6月3日
    00
  • C# 预处理器指令的用法

    下面是C# 预处理器指令的用法的完整攻略: 什么是C# 预处理器指令? 预处理器指令是指在编译之前进行的一些处理操作,与C# 代码的语法和语义有关系。预处理器指令以 # 开头,并且在源代码中的任何地方都可以出现。C# 预处理器指令主要用来控制编译器对代码的处理方式,包括条件编译、去除注释等等操作。 C# 预处理器指令的用法 #define 和 #undef …

    C# 2023年5月14日
    00
  • c#读取excel数据的两种方法实现

    下面是关于“C#读取Excel数据的两种方法实现”的完整攻略。 一、Excel文件读取 1. 使用OLE DB方式读取 前提条件:需要安装Excel程序或Microsoft Access Database Engine软件 使用OLE DB方式读取Excel文件,需要使用System.Data.OleDb命名空间中的相关类,包括OleDbConnection…

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