2010-08-11 12 views
7

Ich habe versucht, eine Anwendung von einer C# -Anwendung zu starten, aber es startet nicht ordnungsgemäß. Von der cmd starten die Anwendung plus die Argumente ein kleines Fenster, das die Ausgabe dann die Anwendung in der Taskleiste minimiert anzeigt.C# Starten Sie die Anwendung mit mehreren Argumenten

Das Starten der Anwendung aus der C# -Anwendung mit dem folgenden Code führt dazu, dass der Prozess im Task-Manager angezeigt wird, aber nichts anderes, kein Ausgabefenster, kein Taskleistensymbol. Was könnte das Problem sein?

myProcess.StartInfo.FileName = ...; 
    myProcess.StartInfo.Arguments = ...; 
    myProcess.Start(); 

auch versucht

myProcess.StartInfo.RedirectStandardOutput = true; //tried both 
    myProcess.StartInfo.UseShellExecute = false; //tried both 
    myProcess.StartInfo.CreateNoWindow = false; 

mit

Process.Start(Filename, args) 

auch arbeiten, um die folgende vorbei nicht. Ich würde wirklich jede Hilfe schätzen, wie ich das angehen kann.

UPDATE: Ich denke, das Problem vielleicht die mehrere Argumente, die

RunMode=Server;CompanyDataBase=dbname;UserName=user;PassWord=passwd;DbUserName=dbu;Server=localhost;LanguageCode=9 

Grüße

+0

Versuchen Sie, die Argumente in einfache Anführungszeichen einzuschließen. – leppie

+0

@leppie Keine Änderung – artsim

Antwort

1
 System.Diagnostics.Process.Start(FileName,args); 

Eg auf den Prozess zu übergeben sind

 System.Diagnostics.Process.Start("iexplore.exe",Application.StartupPath+ "\\Test.xml"); 
+0

Ich hatte das versucht und es funktioniert immer noch nicht – artsim

7

ich nicht tun irgendeinen Fehler in deinem Code sehen. Ich habe ein kleines Programm geschrieben, das

static void Main (string[] args) 
{ 
    foreach (string s in args) 
     Console.WriteLine(s); 
    Console.Read(); // Just to see the output 
} 

an die Konsole seiner args ausdruckt und dann habe ich es in C setzen :, der Name der App „PrintingArgs.exe“ zu sein, so habe ich ein anderes geschrieben, dass führt die erste:

Process p = new Process(); 
p.StartInfo.FileName = "C:\\PrintingArgs.exe"; 
p.StartInfo.Arguments = "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18"; 
p.Start(); 

das gibt mir die gewünschte Ausgabe der Liste der Zahlen

. Die App, die PrintingArgs aufruft, wird beendet, wenn sie p.Start() erreicht. Dies könnte vermieden werden, indem p.WaitForExit(); oder nur Console.Read(); verwendet wird. Auch ich habe beide p.UseShellExecute und p.CreateNoWindow verwendet. Nur in dem Fall, dass

p.UseShellExecute = false; 
p.CreateNoWindow = true; 

die PrintingArgs App macht kein Fenster zu zeigen (auch wenn ich nur p.CreateNoWindow = true lege es zeigt ein Fenster).

Jetzt kommt es mir in den Sinn, dass Sie vielleicht die Argumente falsch übergeben und das andere Programm zum Scheitern bringt und sofort schließt, oder vielleicht zeigen Sie nicht auf die richtige Datei. Überprüfen Sie Pfade und Namen, um Fehler zu finden, die Sie weglassen könnten. Auch , mit

Process.Start(fileName, args); 

nicht verwendet die Informationen, die Sie mit Startinfo in Ihre Prozessinstanz einrichten.

Hope this helfen, Grüße

2

Haben u geben Sie Ihre Process Hidden? Dies ist mein Code, adaequat:

Process p=new Process(); 
p.StartInfo.FileName = filePath;//filePath of the application 
p.StartInfo.Arguments = launchArguments; 
p.StartInfo.WindowStyle = (ProcessWindowStyle)ProcessStyle;//Set it to **Normal** 
p.Start(); 
4

Nicht sicher, ob noch jemand im Anschluss an diese, aber hier ist, was ich kam mit.

Durch das Hinzufügen eines Leerzeichens in der Zeichenfolge konnten zwei Argumente an das Programm übergeben werden, das ich ausführen wollte. Das Programm lief nach der Ausführung des Codes ohne Probleme.

Verwandte Themen