2013-04-17 20 views
5

Ich habe gerade eine Anwendung, die Prozesse mit dem folgenden Code startetWie Parameter an einen anderen Prozess in C# passieren

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

ich aus dieser Anwendung auf den Prozess der Parameter in der Lage sein möchte passieren Ich habe gestartet.

wo muss ich die Parameter in das Projekt des Prozesses, den ich gestartet habe, eingeben? ich versuchte, sie

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

in

zu setzen, aber sie sind in anderen Formen nicht zur Verfügung. Dank für die Hilfe

+0

mein wirkliches Problem ist, dass der Prozess, den ich starte (demo.exe) hat keine Parameter, ich muss wissen, wo ich Parameter in dem demo.exe Projekt setzen muss, danke – Ldg

Antwort

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

oder

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

in demo.exe

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

Sie gefragt, wie diese params zu speichern. Sie können neue Klassen mit statischen Eigenschaften erstellen und diese dort speichern.

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

und in Haupt

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

params an einer beliebigen Stelle des Programms Gebrauch zu bekommen:

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

usw.

+0

danke robert, aber Ich muss wissen, wo, in der aa.exe-Projekt, ich muss die Parameter – Ldg

+0

setzen, nachdem Sie App laufen sie werden in Ihren Argumenten, es hängt davon ab, in welcher Sprache "demo.exe" geschrieben wird. Wenn es C# ist, werden sie in der Funktion main in args sein. Wenn du sie passierst, wie ich oben geschrieben habe, sollte es ohne Probleme funktionieren :) – Robert

+0

danke robert, aber noe wie kann ich diese Argumente in den anderen Formen des Prozesses nennen, die ich gestartet habe? – Ldg

1

Hauptanwendungscode:

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

In Ihrer Demo-Anwendung (Ich gehe davon aus, dass diese Konsole-Anwendung ist)

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

Hier argumentOne, argumentTwo, argumentThree enthält "a", "b" und "c".

+0

danke Faisal Hafeez, auch die Antwort auf die Antwort. Danke noch einmal! – Ldg

Verwandte Themen