RunProgram()

Syntax

Ergebnis = RunProgram(DateiName$ [, Parameter$, Arbeitsverzeichnis$ [, Flags [, SenderProgramm]]])
Beschreibung
Startet ein externes Programm.

Parameter

DateiName$ Der Name des Executables einschließlich dessen Pfad.
Parameter$ (optional) Definiert die Kommandozeilen-Parameter, welche an das Programm übergeben werden.
Arbeitsverzeichnis$ (optional) Gibt das Verzeichnis an, welches dann das aktuelles Verzeichnis für das gestartete Programm sein wird.
Flags (optional) Dies kann eine Kombination (mittels '|' OR-Operator) der folgenden Werte sein:
  #PB_Program_Wait   : Wartet bis das gestartete Programm beendet wird
  #PB_Program_Hide   : Startet das Programm im unsichtbaren Modus
  #PB_Program_Open   : Öffnet ein Programm, um mit diesem zu kommunizieren oder Informationen darüber zu erhalten
  #PB_Program_Read   : Liest die Konsolenausgabe des Programms (stdout)
  #PB_Program_Write  : Schreibt in die Eingabe des Programms (stdin)
  #PB_Program_Error  : Liest die Fehlerausgabe des Programms (stderr)
  #PB_Program_Connect: Verbindet die Ausgabe eines anderen Programms mit der Eingabe dieses Programms
  #PB_Program_Ascii  : Standard Lese/Schreib Operationen erfolgen in ASCII.
  #PB_Program_Unicode: Standard Lese/Schreib Operationen erfolgen in Unicode.
  #PB_Program_UTF8   : Standard Lese/Schreib Operationen erfolgen in UTF8 (Standard).
Ein mittels #PB_Program_Open ausgeführtes Programm muss mit CloseProgram() geschlossen werden. Die 'Read', 'Write', 'Error' und 'Connect' Flags benötigen auch ein gleichzeitig gesetztes #PB_Program_Open Flag.

Beim Verwenden des #PB_Program_Connect Flags muss zuvor ein anderes Programm mit den #PB_Program_Open und #PB_Program_Read Flags gestartet worden sein. Die beim Starten dieses Programms zurückgegebene Nummer muss als 'SenderProgramm' Parameter an RunProgram() übergeben werden.

Die folgenden Befehle können verwendet werden, wenn ein Programm mit dem #PB_Program_Open Flag ausgeführt wurde:

- IsProgram(): überprüft, ob eine Nummer ein gültiges - mittels RunProgram() ausgeführtes Programm - darstellt.
- ProgramID(): gibt die OS Prozess-ID des Programms zurück.
- ProgramRunning(): überprüft, ob ein Programm noch läuft.
- WaitProgram(): wartet auf das Ende eines Programms.
- KillProgram(): beendet das Programm.
- ProgramExitCode(): ermittelt den Exitcode des Programms.
- CloseProgram(): schließt die Verbindung zum Programm.

Die folgenden Befehle können für Programme, welche mit den 'Read', 'Write' und 'Error' Flags ausgeführt wurden, verwendet werden:

- AvailableProgramOutput(): überprüft, ob die Ausgabe eines Programms verfügbar ist.
- ReadProgramString(): liest einen String von der Ausgabe des Programms.
- ReadProgramData(): liest Daten von der Ausgabe des Programms.
- ReadProgramError(): liest einen String von der Fehlerausgabe des Programms.
- WriteProgramString(): schreibt einen String in die Eingabe des Programms.
- WriteProgramData(): schreibt Daten in die Eingabe des Programms.
Sender-Programm (optional) Wird in Verbindung mit dem #PB_Program_Connect Flag benötigt, und muss die Nummer eines zuvor mittels RunProgram() und den #PB_Program_Open und #PB_Program_Read Flags gestarteten anderen Programms beinhalten. Die Ausgabe des "Sender-Programms" wird dann direkt an die Eingabe des nun ausgeführten Programms geschickt. Verschiedene Programme können auf diese Art und Weise verbunden werden, um Daten zwischen verschiedenen Programmen weiterzureichen (der englische Begriff ist 'pipe' - bildlich auch so vorstellbar: "der Datenstrom geht in einer Richtung durch alle Programme").

Rückgabewert

Ein Wert ungleich Null, wenn das Programm erfolgreich gestartet wurde, andernfalls Null.

Wenn #PB_Program_Open in den übergebenen Flags enthalten war, ist der Rückgabewert eine Nummer, welche das Programm identifiziert. Diese kann beim Aufruf von Befehlen wie ReadProgramString() oder ProgramExitCode() verwendet werden, um Informationen über das Programm zu erhalten. Gleiches gilt analog bei anderen der oben genannten Befehle.

Beispiel

  ; Führt den PB Compiler mit der -h Option aus und stellt die Ausgabe dar
  ;
  Compiler = RunProgram(#PB_Compiler_Home+"compilers/pbcompiler", "-h", "", #PB_Program_Open | #PB_Program_Read)
  Output$ = ""
  If Compiler
    While ProgramRunning(Compiler)
      If AvailableProgramOutput(Compiler)
        Output$ + ReadProgramString(Compiler) + Chr(13)
      EndIf
    Wend
    Output$ + Chr(13) + Chr(13)
    Output$ + "Exitcode: " + Str(ProgramExitCode(Compiler))
    
    CloseProgram(Compiler) ; Schließt die Verbindung zum Programm
  EndIf
  
  MessageRequester("Output", Output$)
Unter Windows verwendet RunProgram() die Standard-Applikation, welche mit dem Dateityp der angegebenen Datei verknüpft ist. Ein Beispiel: RunProgram("Test.html") öffnet den WebBrowser, welcher auf Ihrem System standardmäßig für das Anzeigen von Webseiten verwendet wird.

Unterstützte OS

Alle

<- RemoveEnvironmentVariable() - Process Inhaltsverzeichnis - SetEnvironmentVariable() ->