Hallo,
für ein Programm, das einen html2pdf-Konverter aufruft ("wkhtmltopdf"), der mehrzeilig auf stdout Infos ausgibt, möchte ich diese Ausgaben per ReadProgramString() auslesen. Das gelingt partout nicht. Die Suche in den Foren brachte u.a. einen Beispielcode, der das Kommando "ls" verwendet und damit Dateinamen ausgibt.
Das funktioniert, wenn "ls" kein Parameter bekommt. Schon das Kommando "ls" mit Parameter "*", der in der Konsole eine andere Art der Auflistung auswirft, liefert keine Ausgabe mehr. Auch Varianten mit ReadProgramData() brachten nichts.
wkhtmltopdf z.B. gibt in einer Konsole in etwas sowas aus:
Durch Auslesen der Prozentzahl wäre in einer GUI die Fortschrittsanzeige zu füttern, beim Auslesen von "Done" = fertig.Loading page (1/2)
[=================> ] 35%
um dann abzuschließen mit:
Printing pages (2/2)
Done
Geht aber nicht, weil ich bisher nicht an die Ausgaben herankomme.
Hmmm...????
Code: Alles auswählen
;con = OpenConsole() ; ===> Deaktiviert, weil unter 5.30 OpenConsole in der IDE eh grad nicht funktioniert...
;EnableGraphicalConsole(1)
#Coding = #PB_Ascii
; ============>>>>>>>>>>>>>>>>>>>>>>> Parameter "*" und nix geht...
ls = RunProgram("ls","*","",#PB_Program_Open|#PB_Program_Read|#PB_Program_Error) ;|#PB_Program_Write)
;ls = RunProgram("ls","","",#PB_Program_Open|#PB_Program_Read|#PB_Program_Error) ;|#PB_Program_Write)
If IsProgram(ls)
While ProgramRunning(ls)
stderr.s = ReadProgramError(ls, #Coding)
If stderr.s <> ""
;PrintN("stderr: "+stderr)
Debug stderr
EndIf
If AvailableProgramOutput(ls)
stdout.s = ReadProgramString(ls, #Coding)
; PrintN("stdout: "+stdout)
Debug stdout
EndIf
Wend
stderr.s = ReadProgramError(ls, #Coding)
If stderr.s <> ""
;PrintN("stderr: "+stderr)
Debug stderr
EndIf
CloseProgram(ls)
EndIf
;CloseConsole()
End