2011-12-23 43 views
5

我想将一个命令行参数传递给一个winform我有,但不管我指定的参数它一直返回winform文件名和路径。Winform命令行参数返回可执行文件名

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

的消息框将显示C:\App\MyApp.exe即使在CMD I型C:\App\MyApp.exe param1这应该输出param1

+0

谢谢大家,学校的男孩错误! :) – 2011-12-23 19:52:07

回答

7

你没有做错任何事情。

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

为了得到传递给可执行的第一个参数,获取下一个参数(假定存在):

Environment.GetCommandLineArgs()[1] 
+0

谢谢大家,学校男孩错误! :) – 2011-12-23 19:41:20

2

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

4

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

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

的路径返回到你的可执行文件。

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

将返回n连续参数。

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

1

第一个参数将永远是可执行文件的名称。参数从1开始。 因此Environment.GetCommandLineArgs()[1]会给出第一个参数。

0

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

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