Createprocess.... Rückgabedaten auslesen

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

 

danielos

Betreff: Createprocess.... Rückgabedaten auslesen

BeitragDo, Okt 09, 2008 15:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo zusammen!

Also erstmal: Ich weiß, es gab schonmal so einen Thread, mein Problem ist geringfügig anders:

Also, ich starte ein Konsolenprogramm mit Parametern, also quasi "Win.exe -s -d" o.ä.
Nur leider kriege ich es auf Teufel komm raus nicht hin, dass die normalerweise auf der Konsole erscheinenden Texte von "Win.exe" eingelesen werden können.

Bei manchen Beispielen des alten Threads wird nur die erste Zeile ausgelesen, bei anderen gar keine.

Arrow Verschärfend kommt noch hinzu, dass manche Ausgabezeilen von "win.exe" mit ein oder mehreren Leerzeichen beginnen, was wegen ReadAvail() wohl problematisch ist...
Ich bitte flehend um Hilfe ^^

MfG Danielos
 

DjDETE

BeitragDo, Okt 09, 2008 17:04
Antworten mit Zitat
Benutzer-Profile anzeigen
hättest du noch "createprocess" gesucht, wüsstest du es Confused ->JA
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden.

hamZta

Administrator

BeitragDo, Okt 09, 2008 17:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Ein Beispiel aus einem meiner Codes:
Code: [AUSKLAPPEN]

Import Pub.FreeProcess
Local proc:TProcess = TProcess.Create("test param1 param2", 0)
While proc.Status() Or proc.pipe.readavail()
         If proc.pipe.readavail()
            char = Chr(proc.pipe.readbyte())
(...)


Das proc.Status() Or proc.pipe.readavail() braucht man, weil auch nach Beendigung des Prozesses noch Daten in der Pipe stehen können.
Blog.
 

danielos

BeitragDo, Okt 09, 2008 21:20
Antworten mit Zitat
Benutzer-Profile anzeigen
sorry hamZta, aber ich werde aus deinem code noch nicht schlau...
ich hab es geschafft, dass die ausgabe des programms als bytes, bzw. einzelbuchstaben eingelesen werden können, aber nicht, dass zeilen gelesen werden Crying or Very sad

MfG Danielos
 

Dreamora

BeitragDo, Okt 09, 2008 22:26
Antworten mit Zitat
Benutzer-Profile anzeigen
das liegt daran, dass immer nur 1 byte gelesen wird.

Nutz einfach readbytes mit der anzahl verfügbarer bytes und mach daraus nen string (string.fromCstring( ... ) ) oder fromWString( ... ) je nachdem was du geschrieben hast)
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

danielos

BeitragFr, Okt 10, 2008 13:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich bin einfach zu blöd ^^

das von Dreamora krieg ich ohne hilfe nicht hin, und

Code: [AUSKLAPPEN]

Import Pub.FreeProcess
Local proc:TProcess = TProcess.Create("bin\pdftk.exe", 0)
Local char$
While proc.Status() Or proc.pipe.readavail()
         If proc.pipe.readavail()
            char = proc.pipe.ReadString(100)
      Print char
      EndIf
Wend

zeigt zwar den kompletten text, aber nur einen kurzen augenblick, weil dann eine fehlermeldung kommt... das ist auch mit sicherheit nicht der richtige weg Confused

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group