habe ein kleines Problem und ich weiß nicht wie ich es lösen kann.
Ich möchte eine Batch-Datei (.cmd) unsichtbar ausführen und die Konsolenausgabe in einer GUI anzeigen. Prinzipiell funktioniert es auch, allerdings werden nicht mehr alle Programme in der Batch-Datei ausgeführt, sobald ich den Parameter #PB_Program_Open benutze.
PureBasic Code (v5.11):
Code: Alles auswählen
OpenWindow(0, 0, 0, 800, 600, "CMD-Ausgabe", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
EditorGadget(1, 0, 0, 800, 600)
Ausgabe_Roh$ = ""
Ausgabe_Convert$ = ""
Programm = RunProgram("C:\Test.cmd","", "C:\", #PB_Program_Open | #PB_Program_Read | #PB_Program_Hide)
Repeat
Delay (10)
If Programm
If AvailableProgramOutput(Programm)
Ausgabe_Roh$ = ReadProgramString(Programm)
OemToChar_(Ausgabe_Roh$, Ausgabe_Convert$)
AddGadgetItem(1, -1, Ausgabe_Convert$)
EndIf
EndIf
Until WaitWindowEvent() = #PB_Event_CloseWindow
CloseProgram(Programm)
die Test.cmd-Datei:
Code: Alles auswählen
@echo off
cls
echo Sonderzeichen-Test 1: ä Ä ö Ö ü Ü ß
echo Sonderzeichen-Test 2: „ Ž ” ™ š á
echo.
echo.
echo Pingtest...
ping www.google.de
echo.
echo.
echo Checkdisk...
chkdsk C:
echo.
echo.
echo Batch beendet
Die Ausgabe in der GUI:
Checkdisk wird nicht ausgeführt. Den Grund kenne ich nichtSonderzeichen-Test 1: õ - ÷ Í ³ _ ¯
Sonderzeichen-Test 2: ä Ä ö Ö Ü ß
Pingtest...
Ping wird ausgeführt für http://www.google.de [173.194.40.88] mit 32 Bytes Daten:
Antwort von 173.194.40.88: Bytes=32 Zeit=56ms TTL=56
Antwort von 173.194.40.88: Bytes=32 Zeit=70ms TTL=56
Antwort von 173.194.40.88: Bytes=32 Zeit=114ms TTL=56
Antwort von 173.194.40.88: Bytes=32 Zeit=76ms TTL=56
Ping-Statistik für 173.194.40.88:
Pakete: Gesendet = 4, Empfangen = 4, Verloren = 0
(0% Verlust),
Ca. Zeitangaben in Millisek.:
Minimum = 56ms, Maximum = 114ms, Mittelwert = 79ms
Checkdisk...
Batch beendet
Hat jemand eine Idee, woran es liegen könnte?
Noch eine Nebenfrage: Kann man in PureBasic ermitteln, mit welcher Farbe die Ausgabe in der Konsole stattgefunden hat?
lg
SBond

