2011-12-23 9 views
5

私はwinformにコマンドライン引数を渡そうとしていますが、パラメータとして指定したものに関係なく、winformファイル名とパスが返されます。 CMDで私がすべき出力param1C:\App\MyApp.exe param1を入力した場合でも実行可能ファイル名を返すWinformコマンドライン引数

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

メッセージボックスはC:\App\MyApp.exeが表示されます。

+0

みんなありがとう、学校の少年エラー! :) –

答えて

7

あなたは間違ったことはしていません。

コマンドラインの最初の引数は常に実行可能ファイル名です。

は(存在すると仮定して)次のパラメータを取得し、実行可能ファイルに渡される最初の引数を取得する:

Environment.GetCommandLineArgs()[1] 
+0

ありがとうみんな、スクールボーイエラー! :) –

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]は第1引数を与えます。

0

それとも、私のお気に入りの...

foreach (var arg in Environment.GetCommandLineArgs().Skip(1)) 
{ 
    // process each arg in turn. 
} 
関連する問題