2014-04-25 2 views
5

Ich schreibe ein Programm, in dem der Benutzer einige Informationen über einen Kunden eingeben und dann ein MS Word-Modell (* .dotx) öffnen kann. Danach kann er direkt mit einem anderen Programm archiviert werden. Also klicke ich auf eine Schaltfläche, die ich für MS Word erstellt habe und dann sollte es das andere Programm (das Archivprogramm) öffnen und den Pfad zur * .dotx-Datei dorthin übergeben. Ich habe diesen Code, um den Weg zu passieren und das Archiv-Programm öffnen:Wie man vermeidet, dass ein String auf jedem Leerzeichen in der Befehlszeile aufteilt

Process p = new Process(); 
p.StartInfo.Arguments = "Word " + secondArgument; 
p.StartInfo.FileName = fileName; 
p.Start(); 

Der String secondArgument ist der Pfad zur Datei und fileName ist der Pfad zur EXE-Datei des Archiv-Programms.

Um die Argumente in dem Archiv-Programm zu erhalten, verwende ich diesen Code in Form_Load():

string[] args = Environment.GetCommandLineArgs(); 

Dann benutze ich einen MsgBox zu suchen, wenn es richtig übergeben wird. Aber es ist nicht. Der Name der .dotx-Datei enthält Leerräume (z. B. "Pfad \ Dies ist eine Testdatei.dotx"). Die Ausgabe von MessageBox.Show(args[0]) ist also "path \ This". Wie kann ich vermeiden, dass es sich bei jedem Leerzeichen aufteilt?

Vorschläge geschätzt :)

Antwort

12

Sie müssen es mit Anführungszeichen umgeben:

"This is a test file.dotx" 

MSDN:

Kommandozeilenargumente werden durch Leerzeichen getrennt. Sie können doppelte Anführungszeichen (") verwenden, um Leerzeichen innerhalb eines Arguments einzuschließen.

+0

Mein Mann! Das ist genau das, was ich brauche. Danke. Schön, das zu wissen. – Tyler

Verwandte Themen