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

Für allgemeine Fragen zur Programmierung mit PureBasic.
SBond
Beiträge: 266
Registriert: 22.05.2013 20:35

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

Beitrag 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
41 6c 73 6f 20 77 65 6e 6e 20 64 75 20 73 6f 20 76 69 65 6c 20 4c 61 6e 67 65 77 65 69 6c 65 20 68 61 73 74 2c 20 64 61 6e 6e 20 6b 61 6e 6e 73 74 20 64 75 20 61 75 63 68 20 67 6c 65 69 63 68 20 7a 75 20 6d 69 72 20 6b 6f 6d 6d 65 6e 20 75 6e 64 20 61 62 77 61 73 63 68 65 6e 2e

:D
SBond
Beiträge: 266
Registriert: 22.05.2013 20:35

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

Beitrag 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?
41 6c 73 6f 20 77 65 6e 6e 20 64 75 20 73 6f 20 76 69 65 6c 20 4c 61 6e 67 65 77 65 69 6c 65 20 68 61 73 74 2c 20 64 61 6e 6e 20 6b 61 6e 6e 73 74 20 64 75 20 61 75 63 68 20 67 6c 65 69 63 68 20 7a 75 20 6d 69 72 20 6b 6f 6d 6d 65 6e 20 75 6e 64 20 61 62 77 61 73 63 68 65 6e 2e

:D
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8837
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

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

Beitrag 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.
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

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

Beitrag 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
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
SBond
Beiträge: 266
Registriert: 22.05.2013 20:35

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

Beitrag 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
41 6c 73 6f 20 77 65 6e 6e 20 64 75 20 73 6f 20 76 69 65 6c 20 4c 61 6e 67 65 77 65 69 6c 65 20 68 61 73 74 2c 20 64 61 6e 6e 20 6b 61 6e 6e 73 74 20 64 75 20 61 75 63 68 20 67 6c 65 69 63 68 20 7a 75 20 6d 69 72 20 6b 6f 6d 6d 65 6e 20 75 6e 64 20 61 62 77 61 73 63 68 65 6e 2e

:D
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8837
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

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

Beitrag von NicTheQuick »

Wie wär's mit ssh? Wenn's Windows sein muss, dann nutzt man eben Putty und den OpenSSH-Server.
Benutzeravatar
dysti
Beiträge: 656
Registriert: 10.02.2006 18:34
Wohnort: Schlicktown

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

Beitrag von dysti »

@rsbasic: Gibt es sowas auch unter Linux?
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

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

Beitrag von RSBasic »

@dysti
Ich kann leider kein Linuxisch.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
schleicher
Beiträge: 214
Registriert: 30.03.2014 19:57
Computerausstattung: Purebasic 5.70
Wohnort: 18314 Löbnitz

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

Beitrag 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
Purebasic 5.51
SBond
Beiträge: 266
Registriert: 22.05.2013 20:35

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

Beitrag 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


;)
41 6c 73 6f 20 77 65 6e 6e 20 64 75 20 73 6f 20 76 69 65 6c 20 4c 61 6e 67 65 77 65 69 6c 65 20 68 61 73 74 2c 20 64 61 6e 6e 20 6b 61 6e 6e 73 74 20 64 75 20 61 75 63 68 20 67 6c 65 69 63 68 20 7a 75 20 6d 69 72 20 6b 6f 6d 6d 65 6e 20 75 6e 64 20 61 62 77 61 73 63 68 65 6e 2e

:D
Antworten