wieso wird das programm nach kurzer ausgabe angehalten bis die cmd.exe von hand beendet wurde und läuft erst dann wieder weiter? Und wie vermeide ich das?
Schau mal bei While-Wend nach...
In deinem Programm sind 2 Schleifen, einmal Repeat-ForEver und dann noch While-Wend. Diese 2. Schleife, While-Wend, ist es, in der das Programm so lange bleibt, bis es aus dem Konsolenfenster nix mehr lesen kann (sprich bis das Konsolenfenster vom Benutzer manuell geschlossen wurde)....
console.l = RunProgram("cmd","","",#PB_Program_Open|#PB_Program_Read|#PB_Program_Write)
Repeat
length.l = AvailableProgramOutput(console)
If length.l
Debug Str(length.l)+"characters of program output left..."
Debug ReadProgramString(console)
EndIf
Debug "running"
Delay(500)
ForEver
Dass das Teil am Ende bei 73 Zeichen hängenbleibt (die ich übrigens weder mit ReadProgramError() noch mit ReadProgramData() auslesen konnte), macht mich schon stutzig... Da weiss ich auch nicht weiter...
Zuletzt geändert von hardfalcon am 06.03.2006 17:56, insgesamt 1-mal geändert.
ich habe aber vor später was in die konsole zu schreibe deshalb das write!
ich habe mittlerweile eine lösung gefunden indem ich einen thread erstelle der immer schaut ob was zum auslesen da is, und wenn nicht hängt eben blos der thread, leider ist das auf diese weise aber nicht in meinem projekt umzusetzen! Es muss doch irgendeine lösung geben
console.l = RunProgram("cmd","","",#PB_Program_Open|#PB_Program_Read|#PB_Program_Write)
Repeat
length.l = AvailableProgramOutput(console)
If length.l
Debug Str(length.l)+"characters of program output left..."
Debug ReadProgramString(console)
EndIf
Debug "running"
Delay(500)
ForEver
Dass das Teil am Ende bei 73 Zeichen hängenbleibt (die ich übrigens weder mit ReadProgramError() noch mit ReadProgramData() auslesen konnte), macht mich schon stutzig... Da weiss ich auch nicht weiter...
sehr merkwürdig
Debugger hat geschrieben:
running
127characters of program output left...
Microsoft Windows XP [Version 5.1.2600]
running
86characters of program output left...
(C) Copyright 1985-2001 Microsoft Corp.
running
45characters of program output left...
Ich glaub, ich hab die Ursache des Problems (aber leider keine Lösung dazu):
cmd.exe ist ja die Kommandozeile von Windows. Jetzt haben wir das Problem, dass cmd sowohl gestartet werden kann als auch selbst ein weiteres Programm starten kann. Starte "cmd.exe", und gib mal "cmd" ein.
Schau oben in die Titelleiste vom Konsolenfenster. Tipp nochmal "cmd" ein. Schau dir die Titelzeile nochmal an. Das ist wie ein Stapel Blätter: sobald du im letzten "Blatt" "cmd" eingegeben hast, kommt ein neues Blatt obendraufgefallen. Das ganze ist ein Fass ohne Boden... Mit irgendeinem anderen, normalen Programm sollte es gehen... Nur mit "cmd.exe" gehts halt nicht, das is ein Sonderfall...