Ausführen eines Kommandos in der WinCMD

WiZdooM

Erfahrenes Mitglied
Hi

ich hab schonmal in einem Post ein paar Zeilen weiter unten was geschrieben, aber da er eigentlich closed ist und keiner mehr geantwortet hat, schreib ich meinen eigenen :)

Mein Problem mit der Konsole ist folgendes :
Ich hab mir für Cinema 4D eine WindowsForm programmiert, die bis auf diese Kleinigkeit super läuft und je nach angehakter Option einen dynamischen String produziert.(siehe Anhänge)

Wenn ich jetzt den String (aus Anhang 1) an die Konsole schicke, bekomme ich die Fehlermeldung aus Anhang 3 von der Konsole zurück. Kopiere ich jedoch aus dem Textfeld den String samt Anführungsstrichen, mache die Konsole auf und füge ihn da ein, geht es ohne Probleme und Cinema 4D startet mit den Parametern. Genauso geht es wenn ich die Option "Display Console information in main console" aktiviere (diese stellt das Kommando start /b /wait "parentconsole" vor die Pfadangabe - siehe Anhang 2). Das soll jedoch nur optional sein, da C4D eine eigene Konsole öffnet.

Offensichtlich wird die Pfadangabe (Anhang 1) "C:\Program Files..." trotz übergebener Anführungsstriche nicht korrekt verarbeitet. Ersetze ich die doppelten Anführungsstriche ("...") gegen einfache Anführungsstriche ('...') springt die Konsole in das Verzeichnis führt aber Cinema 4D.exe nicht mit den mitgegebenen Parametern aus.

Ich hoffe mein Problemchen ist einigermaßen verständlich (auch wenn es fast schon kosmetischer Natur ist ;) ).
Hat jemand schonmal ähnliches erlebt, oder weiß jemand eine Lösung ?

Grüsse,
WiZdooM
 
Hi!

Vielleich musst aber auch die Parameter in Anführungszeichen setzen... Bin mir grad nicht sicher.
Ich bin aber nicht so der Freund von dem ziellosen Starten eines Kommandos in der Console.
Ich würde mir dafür eine Klasse implementieren, die in der Lage ist einen Prozess zu verwalten.

Die Parameter schreibe ich in die StartInfo des Prozesses und es Funktioniert dann auch.
Der Vorteil daran ist das mittels des Process.Exited Events fest stellen kannst,
ob der Prozess beendet wurde und Du in der Zwischenzeit deine Anwendung sperren kannst.

Du könntest im nachhinein des gerenderte Endergebnis zB auch sofort öffnen.
Weiterhin kannst während der Prozess läuft, den Output abgreifen, aufschlüsseln
und in deriner GUI Statusmeldungen und den Fortschritt ausgeben.
In diesem Thread findest ein rudimetäres Beispiel meiner ersten Schritte auf dem Gebiet:
[thread=218898]StartInfo RedirectStandardOutput --> StreamReader bleibt leer :( - Thread [/thread]
 
Dankeschön, genau das wars!
Die Konsole hat nochmal Anführungsstriche um den kompletten String verlangt...
 
Zurück