2013-04-17 18 views
5

Ho appena creato un'applicazione che avvia i processi con il seguente codiceCome passare parametri a un altro processo in C#

string [] args = {"a", "b"}; 
             Process.Start ("C: \ \ demo.exe" String.Join ("", args)); 

Mi piacerebbe essere in grado di passare i parametri da questa applicazione al processo ho lanciato.

dove devo inserire i parametri nel progetto del processo che ho avviato? Ho provato a metterli in

static void Main (string [] args) {... 

ma non sono disponibili in altre forme. grazie per l'aiuto

+0

il mio vero problema è che il processo che lancio (demo.exe) non ha parametri, ho bisogno di sapere dove devo mettere i parametri nel progetto demo.exe, grazie – Ldg

risposta

12
Process p= new Process(); 
p.StartInfo.FileName = "demo.exe"; 
p.StartInfo.Arguments = "a b"; 
p.Start(); 

o

Process.Start("demo.exe", "a b"); 

in demo.exe

static void Main (string [] args) 
{ 
    Console.WriteLine(args[0]); 
    Console.WriteLine(args[1]); 
} 

ti ha chiesto come salvare questi params. Puoi creare una nuova classe con proprietà statiche e salvare lì questi parametri.

class ParamHolder 
{ 
    public static string[] Params { get; set;} 
} 

e nel principale

static void Main (string [] args) 
{ 
    ParamHolder.Params = args; 
} 

per ottenere params in qualsiasi luogo per l'utilizzo del programma:

Console.WriteLine(ConsoleParamHolder.Params[0]); 
Console.WriteLine(ConsoleParamHolder.Params[1]); 

ecc

+0

grazie robert, ma Ho bisogno di sapere dove, nel progetto aa.exe, devo mettere i parametri – Ldg

+0

dopo aver eseguito l'app che saranno nei tuoi argomenti, dipende dalla lingua in cui è scritto "demo.exe". Se è C# saranno in args in funzione principale. Se li passi come ti ho scritto sopra dovrebbe funzionare senza problemi :) – Robert

+0

grazie robert, ma noe come posso chiamare questo argomento nelle altre forme del processo che ho lanciato? – Ldg

1

principale Codice funzione:

var process = new Process(); 
process.StartInfo.FileName = "demo.exe" // Path to your demo application. 
process.StartInfo.Arguments = "a b c" // Your arguments 
process.Start(); 

Nell'applicazione demo (io parto dal presupposto che questo è l'applicazione di console)

static void Main (string [] args) 
{ 
    var agrumentOne = args[0]; 
    var agrumentTwo = args[1]; 
    var agrumentThree = args[3]; 
} 

Qui argumentOne, argumentTwo, argumentThree conterrà "a", "b" e "c".

+0

grazie Faisal Hafeez, anche l'abile risposta. grazie ancora! – Ldg

Problemi correlati