Laden...

Kommandozeile

Erstellt von robot vor 19 Jahren Letzter Beitrag vor 19 Jahren 2.347 Views
R
robot Themenstarter:in
2 Beiträge seit 2005
vor 19 Jahren
Kommandozeile

Hallo!

Ich möchte gerne ein kommandozeilen-basiertes Programm von einer C#-Anwendung steuern.
Das Programm ähnelt "telnet". Wenn man in der MS-DOS Eingabeaufforderderung von WinXP telnet eingibt, wird ja telnet gestartet und es erscheint:
_Willkommen

Das Eingabezeichen ist 'CTRL++'

Microsoft Telnet>_

Hinter den "Microsoft Telnet>" kann man dann ja die entsprechenden Befehle eingeben.
Bei dem Programm, das ich steuern möchte ist das genauso. Wenn man "programm.exe" aufruft, erscheint ein Text und eine Zeile, in der man den jeweiligen Befehl eingeben kann. Man kann dieses Programm also nicht wiefolgt steuern durch den Aufruf "programm.exe -parameter" steuern, sondern muss erst "programm.exe" starten und kann dann hinter einenm ">" einen Befehl wie z.B. "help" eingeben. (Bei telnet funktioniert ja auch der Aufruf "telnet.exe -parameter". Insofern hinkt der Vergleich mit dem Programm, das ich aufrufen möchte, nur telnet ist ja bei jeder Windowsinstallation standardmäßig mit dabei, daher habe ich telnet als Beispiel gewählt).

Bei dem Programm, dass ich steueren möchte, müsste ich nachdem ich es gestartet habe einen Befehl aufrufen, der eine Verbindung startet, dann müsste ich verschiedene andere Befehle aufrufen, mit denen ich Daten verschicken und abrufen usw. kann, d.h. die C#-Anwendung müsste quasi das "Kommandozeilen-Programm" einmal starten und dann die verschiedenen Befehle eingeben, das "Kommandozeilen-Programm" darf also nicht für jeden Befehl jeweils neu gestarten werden, wie das ja bei Aufrufen von Programmen in der Form: "programm.exe -parameter" der Fall ist.

Ich wäre für jede Hilfe dankbar!
Gruß,
Jan

F
124 Beiträge seit 2004
vor 19 Jahren

ok und jetzt sagst du uns noch, um was es sich für ein programm wirklich handelt und was du eigentlich machen willst. meistens gibt es bessere lösungen, die dann auch noch einfacher sind

R
robot Themenstarter:in
2 Beiträge seit 2005
vor 19 Jahren

Danke für deine Antwort. Allerdings, gibt es hierbei keine bessere Lösung. Bei dem Programm handelt es sich um eine Art "Entwicklungsumgebung" für ein Mikrocontrollerboard. Es handelt sich dabei um einen C-Dialekt, der mit Hilfe einer Virtual Machine auf dem Mikrocontroller ausgeführt. Zudem ist die Virtual Machine interaktiv, d.h. ich kann über den PC jede beliebige Funktion des Programmes, das die Virtual Machine ausführt, aufrufen.
Bei der Verbindung, die ich erwähnt habe, handelt es sich somit um eine Verbindung übder die serielle Schnittstelle. Das Protokoll über das das Programm auf dem PC, das ich über die Kommandozeile steuern möchte, mit dem Mikocontroller kommuniziert ist nicht offengelegt. Die einzige Möglichkeit besteht also in der Steuerung über die Kommandozeile.

P
939 Beiträge seit 2003
vor 19 Jahren

Man kann aus .Net Anwendungen heraus Konsolen-Programme starten und bedienen. Guck dir mal die Klassen System.Diagnostics.ProcessStartInfo und System.Diagnostics.Process an.

Process hat eine StandardInput-Eigenschaft, an die Text an die Prozess-Konsole gesendet werden kann. Damit das funktioniert muss unter anderem ProcessStartInfo.RedirectStandardInput = true gesetzt werden. Näheres steht in der Hilfe.

Gruss
Pulpapex

1.549 Beiträge seit 2004
vor 19 Jahren

Vieleicht hilft dir auch das Prozess/Anwendung aus eigenem Programm starten Weiter

Wir Arbeiten eigendlich nicht wir nehmen nur das geld