Funktionreferenz


Run



Beschreibung anzeigen in

Startet ein externes Programm.

Run ( "program" [, "workingdir" [, show_flag [, opt_flag]]] )

Parameter

program Der komplette Pfad des Programms (.EXE, .BAT, .COM oder .PIF), das ausgeführt werden soll. (siehe Bemerkungen)
workingdir [optional] Der Pfad, in dem das Programm ausgeführt werden soll (Arbeitsverzeichnis). Leerstring ("") gibt das aktuelle Arbeitsverzeichnis an. Dies ist nicht der Pfad des Programms.
show_flag [optional] Das "show"- (Sichtbarkeits-) Flag des auszuführenden Programms:
    @SW_HIDE = verstecktes Fenster (alternative Eingabe: default).
    @SW_MINIMIZE = minimiertes Fenster.
    @SW_MAXIMIZE = maximiertes Fenster.
opt_flag [optional] Steuert verschiedene Optionen, die die Interaktion zwischen Parent- und Child-Prozess betreffen (STDIO).
    $STDIN_CHILD (0x1) = Stellt ein Handle zum STDIN-Stream des Child-Fensters bereit
    $STDOUT_CHILD (0x2) = Stellt ein Handle zum STDOUT-Stream des Child-Fensters bereit.
    $STDERR_CHILD (0x4) = Stellt ein Handle zum STDERR-Stream des Child-Fensters bereit.
    $STDERR_MERGED (0x8) = Stellt das selbe Handle für den STDOUT- und STDERR-Stream bereit (Setzt $STDOUT_CHILD und $STDERR_CHILD).
    $STDIO_INHERIT_PARENT (0x10) = Stellt dem Child-Fenster das Handle zum STDIO-Stream des Parent-Fensters bereit. Kann nicht mit einem anderen STDIO-Flag kombiniert werden. Dieses Flag ist nur dann sinnvoll, wenn die Parent-Anwendung als Kommandozeilenapplikation kompiliert wurde.
    $RUN_CREATE_NEW_CONSOLE (0x10000) = Der Child-Kommandozeilenprozess wird in einem eigenen Kommandozeilenfenster ausgeführt. Dieses Flag ist nur dann sinnvoll, wenn die Parent-Anwendung als Kommandozeilenapplikation kompiliert wurde.

Die Konstanten sind in AutoItConstants.au3 definiert.

Rückgabewert

Erfolg: Die PID des Prozesses, der gestartet wurde.
Fehler: 0 und setzt das @error Flag auf ungleich null.

Bemerkungen

Pfade mit Leerzeichen müssen in Anführungszeichen gesetzt werden.

Um DOS- (Konsolen-) Kommandos auszuführen, sollte man folgendes ausprobieren:
Run(@ComSpec & " /c " & 'commandName', "", @SW_HIDE)    ;Nicht die Leerzeichen vor und nach "/c" vergessen!

Nach dem Start des angeforderten Programms wird das Skript weiter ausgeführt. Soll die Ausführung des Skripts angehalten werden, bis das gestartete Programm beendet ist, so ist statt der Run Funktion die RunWait() Funktion zu verwenden.

Das Bereitstellen der Standard-I/O-Parameter mit den geeigneten Werten ist Voraussetzung für die Interaktion des Child-Prozesses mit den Funktionen StderrRead(), StdinWrite() und StdoutRead().
Um mehrere I/O-Streams zu verwalten, kombiniert man die „Flag“-Werte (oder man benutzt $STDERR_CHILD, $STDIN_CHILD & $STDOUT_CHILD).

Um die I/O-Streams zu schließen, müssen folgende Bedingungen erfüllt sein:
1) Der Child-Prozess hat seine Seite des Streams geschlossen (das ist der Fall, wenn der Child-Prozess geschlossen wird).
2) AutoIt muss gekaperte Streams auslesen, bis keine Daten mehr enthalten sind.
3) Wenn STDIN dem Child-Prozess zugewiesen ist, muss StdinWrite() aufgerufen werden, um den Stream zu schließen. Sobald alle Streams als nicht mehr benötigt erkannt werden, werden alle intern verwendeten Ressourcen automatisch freigegeben.

StdioClose() kann verwendet werden, um das Schließen der STDIO-Streams zu erzwingen.

Verwandte Funktionen

ConsoleRead, ProcessClose, RunAs, RunAsWait, RunWait, ShellExecute, ShellExecuteWait, StderrRead, StdinWrite, StdioClose, StdoutRead

Beispiel

Example()

Func Example()
    ; Startet den Editor mit einem maximierten Fenster.
    Local $iPID = Run("notepad.exe", "", @SW_SHOWMAXIMIZED)

    ; Wartet 10 Sekunden bis das Editorfenster erscheint.
    WinWait("[CLASS:Notepad]", "", 10)

    ; Wartet 2 Sekunden.
    Sleep(2000)

    ; Schließt den Editor Prozess mit Hilfe der PID die durch Run zurückgegeben wurde.
    ProcessClose($iPID)
EndFunc   ;==>Example