Seite 1 von 1

[RunProgram() + .cmd] einige Einträge werden nicht gestartet

Verfasst: 28.09.2013 19:03
von SBond
Hallo Leute,

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:
Sonderzeichen-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
Checkdisk wird nicht ausgeführt. Den Grund kenne ich nicht :(
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

Re: [RunProgram() + .cmd] einige Einträge werden nicht gesta

Verfasst: 29.09.2013 01:54
von SBond
Problem gelöst:

Code: Alles auswählen

Programm = RunProgram("C:\Test.cmd","", "C:\", #PB_Program_Open | #PB_Program_Read | #PB_Program_Hide)
geändert in:

Code: Alles auswählen

Programm = RunProgram("C:\Test.cmd","", "C:\", #PB_Program_Open | #PB_Program_Read | #PB_Program_Write| #PB_Program_Hide)

Gibt es eine Möglichkeit noch die Farbe in der Konsole zu ermitteln?

Re: [RunProgram() + .cmd] einige Einträge werden nicht gesta

Verfasst: 29.09.2013 02:45
von NicTheQuick
Normalerweise können über Pipes keine Farben übertragen werden, genau so wenig wie z.B. das ansprechen einer bestimmten Zeile und Spalte im Konsolenfenster nicht übertragen werden kann.

Re: [RunProgram() + .cmd] einige Einträge werden nicht gesta

Verfasst: 29.09.2013 10:44
von RSBasic
@SBond
Erstell eine eigene Konsole und verwende System-API, um auch auf Batch-Befehle zugreifen zu können. Dann kannst du auch in deiner eigenen Konsole die Farbe ermitteln und ändern u.v.m.: http://www.rsbasic.de/aktualisierung/wi ... %BChren.pb

Re: [RunProgram() + .cmd] einige Einträge werden nicht gesta

Verfasst: 29.09.2013 14:16
von SBond
Danke für die Infos :mrgreen:

Eine eigene Konsole wollte ich eigentlich nicht direkt verwenden.
Die Idee dahinter ist die Überwachung einer Konsole von einem Netzwerk-PC, auf dem Programme kompiliert werden. Die Ausgabe soll auf meinem Rechner weitergeleitet werden.


nochmals Danke ;)

lg
SBond

Re: [RunProgram() + .cmd] einige Einträge werden nicht gesta

Verfasst: 29.09.2013 19:32
von NicTheQuick
Wie wär's mit ssh? Wenn's Windows sein muss, dann nutzt man eben Putty und den OpenSSH-Server.

Re: [RunProgram() + .cmd] einige Einträge werden nicht gesta

Verfasst: 04.10.2013 15:58
von dysti
@rsbasic: Gibt es sowas auch unter Linux?

Re: [RunProgram() + .cmd] einige Einträge werden nicht gesta

Verfasst: 04.10.2013 18:32
von RSBasic
@dysti
Ich kann leider kein Linuxisch.

Re: [RunProgram() + .cmd] einige Einträge werden nicht gesta

Verfasst: 31.03.2014 16:04
von schleicher
Habe ein ähnliches Projekt am laufen und habe testweise den Code vom Post 1 übernommen und aisgeführt. Jedoch sieht die Ausgabe im Gui bei mir anders aus. Bei mir erscheint alles in einer Reihe mit Hyroglyphen (Noten usw.) Liegt es am Format der cmd-Datei. Habe schon alles probiert aber keine Darstellung wie im 1. Post erhalten. Was muss ich tun, um die Ausgabe im Gui richtig (so wie im Post 1)zu erhalten? Benutze Windows Vista

Re: [RunProgram() + .cmd] einige Einträge werden nicht gesta

Verfasst: 31.03.2014 16:24
von SBond
jo...

du hast dein Programm sicherlich in Unicode-Modus kompiliert ;)
Der Eintrag: "Unicode-Executable erstellen" muss in den Compiler-Optionen deaktiviert werden.

eine zweite Möglichkeit wäre die String-Konvertierung von Unicode zu ASCII


;)