Console zeile lesen

Anfängerfragen zum Programmieren mit PureBasic.
TheSaint
Beiträge: 143
Registriert: 21.12.2008 18:59

Console zeile lesen

Beitrag von TheSaint »

Hallo Zusammen,

ich habe eine Frage zur Consolen Steuerung ?? Ist das richtig ausgedrückt?

Also ich möchte in der Console mehrere Befehle ausführen, wie z. B. mit WinRar (ein Backup starten)

Nachdem WinRar fertig ist, soll die Console wieder geschlossen werden.

PureBasic sollte erkennen das die Console geschlossen wird oder ist.

Oder kann ich von der Console Zeilen oder Texte auslesen?
Was echt super wäre wenn das möglich ist. Damit ich auf verschiedene Ereignisse wieder mit PureBasic darauf reagieren kann.

z. B. eine Meldung von WinRaR "Backup erstellt" und anschließend gebe ich weitere Befehle durch PureBasic in die Console ein. Jedoch muss ich warten bis das Backup erstellt wurde.

Das mit WinRar ist nur ein Beispiel.

Wäre super wenn mir da jemand auf die Sprünge helfen könnte.

Schon mal vielen Dank.

Viele Grüße
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

externe programme startet man mit RunProgram.
das hat mit der Console nichts zu tun, die ist nur eine Ausgabeeinheit.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

Ich denke, sowas ist das, was du suchst:

http://www.purebasic.fr/english/viewtopic.php?t=32495

Gruß, Falko
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Beitrag von Bisonte »

Dazu steht in der Hilfe (F1) bei RunProgram() ein Beispielcode,
der wirklich recht verständlich ist.
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
TheSaint
Beiträge: 143
Registriert: 21.12.2008 18:59

Beitrag von TheSaint »

Hallo Zusammen,

vielen Dank für Eure Hilfe.

Wünsche Euch ein Frohes Weihnachtsfest.

Viele Grüße
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

Ich glaube, dann habe ich mich wohl verlesen. Es geht also darum ein Programm auszuführen, welches z.B. ein Backup zippt und nach Beendigung
eine Rückmeldung ausgibt.

Dann verharre ich mich auch mal auf Runprogramm.

Ebenfalls, frohe Weihnachten :)
Bild
Win11 Pro 64-Bit, PB_6.11b1
TheSaint
Beiträge: 143
Registriert: 21.12.2008 18:59

Beitrag von TheSaint »

Hallo Falko,

nein, Du hast Dich nicht verlesen. Das mit dem Backup war nur ein Beispiel. Es geht um verschiedene andere Programme, die in einer Console ausgeführt werden. Diese geben bei Beendigung eine Meldung in einer Consolen Zeile aus. Diese müsste ich verarbeiten.

Wäre schön, wenn Du mir noch ein weiteres Beispiel geben könntest.

Vielen Dank nochmal und ein Frohes Weihnachtsfest.

Viele Grüße
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

Beispiel in der PB-Hilfe unter RunProgram() .
Kurze Erklärung:

Die Konsole stellt "stdout" (Standardausgabe) dar. Um diese Daten dem
User anzeigen zu können ist die Konsole da. Andere Programme können
ebenfalls diesen Datenstream (Datenfluss) lesen. Unter PureBasic ist das
mit der "Process-Bibliothek" abgedeckt. RunProgram() bietet dabei den
einstieg und dank dem Flag #PB_Program_Hide kann die Konsole
versteckt werden, so das der Benutzer diese Kommunkationsvariante
auch nicht sieht.

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

Den obigen Link hatte ich ja schon gepostet und ts-soft sein
Sourceschnipsel ist gut dafür zu gebrauchen. Ich habe das mal etwas
umgestellt um in der Console die einzelnen Ausgabezeilen in der Console auszugeben.
Damit könntest du ebenso gut mit PB-Befehlen eine Auswertung auf
bestimmte Bedingungen machen bzw. prüfen. Wenn also alle Ereignisse
stimmen könntest du weitere Runprograms nach dem gleichen Schema
aufrufen und überprüfen oder am Schluss beenden. Da ich nicht genau
weiß, welche Programme was machen sollen habe ich ts-softs Beispiel
einmal in die Console ausgeben lassen. Den Messagerequester kann man
dann auch weglassen. Der ist nur da um zu zeigen, das die Ausgaben
zusammengefasst in der Variable Fulloutput stehen.


Vorraussetzung für diese Funktionen ist aber PB 4.3:

Code: Alles auswählen

EnableExplicit
OpenConsole()
Define ping.l = RunProgram("ping", "google.com", "", #PB_Program_Open|#PB_Program_Read)
Define Output.s = ""
Define FullOutput.s=""
If ping
  While ProgramRunning(ping)
    Output=ReadProgramString(ping); Merke dir jede Zeile
    PrintN(Output); Dieser String wird in die Console ausgegeben.
    FullOutput + Output + Chr(13); Speicher für das Messagerequester die gesamte Ausgabe
  Wend
  CloseProgram(ping)
  FullOutput + Chr(13) + Chr(13); Zweimal Enter gedrückt
EndIf
MessageRequester("ping", FullOutput); Kann man für weitere Bearbeitung weglassen 
Input(); Lass die console noch offen um dort nachzuschauen
CloseConsole()
Gruß, Falko
Bild
Win11 Pro 64-Bit, PB_6.11b1
TheSaint
Beiträge: 143
Registriert: 21.12.2008 18:59

Beitrag von TheSaint »

Hallo Falko,

vielen Dank für Dein Beispiel.
Mit diesem Beispiel bin ich viel besser klar gekommen als mit dem aus Deinem vorhergehenden Link.

Nochmals vielen Dank und schöne Weihnachtsfeiertage.

Viele Grüße
Antworten