尽管听起来很可怕,你可以利用Microsoft.VisualBasic.ApplicationServices使这个非常简单的(你可以添加在你的C#项目Microsoft.VisualBasic程序的引用)。
作为一个简单的例子,你可以创建一个新的C#的WinForms项目和修改Program.cs中看起来是这样的:在Form1
class Program : WindowsFormsApplicationBase
{
static Form1 mainForm = null;
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main(string[] commandline)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Program prog = new Program();
prog.MainForm = mainForm = new Form1();
prog.Run(commandline);
}
public Program()
{
this.IsSingleInstance = true;
}
protected override void OnStartupNextInstance(StartupNextInstanceEventArgs eventArgs)
{
base.OnStartupNextInstance(eventArgs);
mainForm.Startup(eventArgs.CommandLine.ToArray());
}
}
然后扔在那里的标签和一个小的代码显示它的工作:
public void Startup(string[] commandLine)
{
string output = "";
foreach (string arg in commandLine)
output += arg + "\n";
label1.Text = output;
}
public Form1()
{
InitializeComponent();
Startup(Environment.GetCommandLineArgs());
}
与这个小片段的唯一的小问题,就是你第一次启动命令行参数包括应用程序的名称,但它不包括在后续推出。