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技术站