2011-12-23 8 views
5

Sto tentando di passare un argomento da riga di comando a una winform che ho ma non importa quale sia il parametro specificato come parametro che continua a restituire winform nomefile e percorso.Argomento della riga comandi Winform che restituisce il nomefile eseguibile

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

MessageBox mostrerà C:\App\MyApp.exe anche se ad una cmd I tipo C:\App\MyApp.exe param1 che deve emettere param1.

+0

Grazie a tutti, errore di scuola ragazzo! :) –

risposta

7

Non stai facendo niente di male.

Il primo argomento sulla riga di comando è sempre il nome dell'eseguibile.

Per ottenere il primo argomento passato all'eseguibile, ottenere il parametro successivo (supponendo esiste):

Environment.GetCommandLineArgs()[1] 
+0

Grazie a tutti, errore ragazzo della scuola! :) –

2

Il primo argomento di riga di comando è sempre il percorso del programma.
Environment.GetCommandLineArgs()[1] sarà "param1".

4

La prima voce (indice 0) è sempre il percorso dell'eseguibile. È necessario accedere indice 1. Prova a modificare:

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

restituisce il percorso del file eseguibile.

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

restituirà n parametri consecutivi.

Environment.GetCommandLineArgs() restituisce una serie di parametri.

1

Il primo argomento sarà sempre il nome dell'eseguibile. i parametri iniziano da 1. quindi Environment.GetCommandLineArgs() [1] fornirà il primo argomento.

0

Oppure, il mio preferito ...

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