Winform命令行参数返回可执行文件名

时间:2011-12-23 19:37:50

标签: c# winforms parameters

我正在尝试将命令行参数传递给我拥有的winform,但无论我指定什么作为参数,它都会一直返回winform文件名和路径。

private void Form1_Load(object sender, EventArgs e)
{
    MessageBox.Show(Environment.GetCommandLineArgs()[0]);
}

即使在我输入C:\App\MyApp.exe的cmd中,消息框也会显示C:\App\MyApp.exe param1

6 个答案:

答案 0 :(得分:8)

你没有做错任何事。

命令行上的第一个参数始终是可执行文件名。

要获取传递给可执行文件的第一个参数,请获取下一个参数(假设存在一个参数):

Environment.GetCommandLineArgs()[1]

答案 1 :(得分:5)

第一个条目(索引0)始终是可执行文件的路径。您需要访问索引1.请改为尝试:

private void Form1_Load(object sender, EventArgs e)
{
    var arguments = Environment.GetCommandLineArgs();
    if (arguments.Length > 1) {
        MessageBox.Show(arguments[1]);
    }
}

答案 2 :(得分:2)

第一个命令行参数始终是程序的路径 Environment.GetCommandLineArgs()[1]将为"param1"

答案 3 :(得分:2)

Environment.GetCommandLineArgs()[0]

返回可执行文件的路径。

Environment.GetCommandLineArgs()[1]
... 
Environment.GetCommandLineArgs()[n]

将返回n个连续参数。

Environment.GetCommandLineArgs()返回一组参数。

答案 4 :(得分:1)

第一个参数将始终是可执行文件的名称。参数从1开始。 所以Environment.GetCommandLineArgs()[1]将给出第一个参数。

答案 5 :(得分:0)

或者,我最喜欢的......

foreach (var arg in Environment.GetCommandLineArgs().Skip(1))
{
    // process each arg in turn.
}