Bezeichnung
Execute -- Führt eine Datei synchron aus
Übersicht
[rc, output$ =] Execute(file$[, args$, t])
Frühere syntax
Execute(cmdline$[, resetkeys])
Bibliothek
dos

Beschreibung
Dieser Befehl führt die durch file$ angegebene Datei synchron aus und übergibt ihm die in args$ angegebenen Argumente. Falls Sie ein Programm asynchron ausführen möchten, müssen Sie den Befehl Run() benutzen. Siehe Run für Details.

Wenn synchrones Ausführen einer Datei vom Betriebssystem unterstützt wird, können Sie diesen Befehl fürs Anzeigen von Daten-Dateien wie Dokumente oder Bilder durch das Standardanzeigeprogramm verwenden. In diesem Fall kann file$ auch eine nicht ausführbare Datei wie ein JPEG-Bild oder eine MP3-Datei sein.

Auf Android muss file$ entweder eine Datendatei wie ein JPEG-Bild oder ein Paketname wie com.airsoftsoftwair.hollywood sein, wenn Sie mit diesem Befehl eine andere App starten wollen.

Beachten Sie, dass es aus historischen Gründen einige Fallstricke bei der Verwendung von diesem Befehl gibt. Vor Hollywood 9.0 erwartete dieser Befehl, dass Programm und Argumente in einer einzigen cmdline$-Zeichenkette zusammengefasst werden. In diesem Fall ist beim Umgang mit Leerzeichen besondere Vorsicht geboten (Details siehe unten). Ab Hollywood 9.0 gibt es eine neue Syntax, die es Ihnen ermöglicht, Programm und Argumente als zwei separate Argumente zu übergeben, was die Sache viel einfacher macht. Um die Kompatibilität mit früheren Versionen aufrechtzuerhalten, kann diese neue Syntax jedoch nur verwendet werden, wenn Sie explizit eine Zeichenkette im zweiten Argument übergeben. Wenn Sie also die neue Syntax verwenden möchten, stellen Sie sicher, dass Sie im zweiten Argument eine Zeichenkette übergeben. Wenn das Programm, das Sie starten möchten, keine Argumente benötigt, übergeben Sie einfach einen leere Zeichenkette (""), um Hollywood zu signalisieren, dass Sie die neue Syntax verwenden möchten.

Wenn Sie Argumente im Parameter args$ übergeben, beachten Sie bitte, dass die hier angegebene Zeichenkette auf die gleiche Weise an das Programm übergeben wird, wie wenn Sie das Programm über die Befehlszeile ausführen würden. Das bedeutet, dass Sie Anführungszeichen verwenden müssen, wenn ein Argument Leerzeichen enthält. Selbst wenn Sie nur den Pfad zu einer einzelnen Datei in args$ übergeben, müssen Sie ihn in Anführungszeichen setzen, falls der Pfad Leerzeichen enthält, da Hollywood nicht wissen kann, welche Art von Argumenten Sie an das Programm übergeben, und daher niemals automatisch Anführungszeichen an die in args$ übergebene Zeichenkette anhängt. Sie müssen dies manuell tun, wenn eines Ihrer Argumente Leerzeichen enthält.

Wenn Sie im zweiten Argument keine Zeichenkette übergeben, wird die alte Syntax verwendet, was bedeutet, dass Sie bei der Übergabe von Programmpfaden, die Leerzeichen enthalten, sehr vorsichtig sein müssen, da das allererste Leerzeichen in cmdline$ als Trennzeichen zwischen Programm und Argumenten interpretiert wird. Wenn Sie ein Programm starten möchten, dessen Pfadangabe Leerzeichen verwendet, müssen Sie diese Pfadangabe in doppelte Anführungszeichen setzen, sonst funktioniert es nicht. Sie können diese Komplikationen leicht vermeiden, indem Sie im zweiten Argument einfach eine Zeichenkette übergeben, auch wenn diese leer ist (siehe oben für Details).

Ab Hollywood 9.0 ist es möglich, das Programm und seine Argumente in zwei separaten Argumenten anzugeben, was die Sache wesentlich komfortabler macht. Außerdem gibt es jetzt ein neues optionales Tabellenargument, das verwendet werden kann, um weitere Optionen anzugeben.

Die folgenden Optionen werden derzeit durch das optionale Tabellenargument unterstützt:

Directory:
Mit diesem Tabellenargument können Sie das aktuelle Verzeichnis für das zu startende Programm festlegen. (V9.0)

ResetKeys:
Das Tabellenargument resetkeys ist nur interessant für fortgeschrittene Anwender. Wenn dies auf False gesetzt ist, wird Execute() nicht alle internen Tastenzustände zurücksetzten, nachdem das Programm ausgeführt wurde. Standardmäßig werden alle Tastenzustände zurückgesetzt, wenn Execute() beendet ist, weil Programme unter Verwendung von Execute() übernehmen oft den Tastaturfokus und Hollywood wird möglicherweise nicht in der Lage sein, die internen Status-Flags zurückzugsetzten. Aus diesem Grund werden standardmäßig mit Execute() alle internen Tastenzustände zurückgesetzt, wenn dieser Befehl beendet ist. Es könnte dann Sinn machen, dieses Verhalten zu deaktivieren, wenn Sie Execute() für den Start von Programmen verwenden, die nicht über eine GUI verfügen und nicht den Tastaturfokus wegnehmen. Voreingestellt ist True. (V5.1)

ForceExe:
Wenn dieser Tag auf True gesetzt ist, wird Execute() die in file$ übergebene Datei immer als ausführbare Datei behandeln. Dies ist nur unter Linux und macOS nützlich, da auf diesen Plattformen Dateien mit einer Erweiterung als Datendateien behandelt werden, sodass Hollywood stattdessen versucht, das entsprechende (Anzeige)Programm für die Datendatei zu starten. Daher funktioniert der Versuch, Execute() auf einer ausführbaren Datei namens "test.exe" zu verwenden, aufgrund der Erweiterung *.exe unter Linux und macOS nicht. Indem Sie ForceExe auf True setzen, können Sie es jedoch zum Laufen bringen. Die Voreinstellung ist False. (V9.0)

Verb:
Unter Windows kann dies auf eine Zeichenkette gesetzt werden, der dem Befehl Execute() mitteilt, was mit der Datei geschehen soll. Dies kann eines der folgenden Verben sein:

edit
Öffnet die angegebene Datei in einem Editor.

explore
Öffnet den angegebenen Ordner im Explorer. Wenn Sie dieses Verb verwenden, müssen Sie statt einer Datei einen Ordner an Execute() übergeben.

find
Öffnet den Suchdialog für den angegebenen Ordner. Wenn Sie dieses Verb verwenden, müssen Sie statt einer Datei einen Ordner an Execute() übergeben.

open
Öffnet die angegebene Datei.

print
Gibt die angegebene Datei aus.

runas
Startet die angegebene Datei im Administratormodus.

Beachten Sie, dass der Tag Verb nur unter Windows unterstützt wird. (V9.1)

ConsoleMode:
Wenn dieses Tag unter Windows auf True gesetzt ist, wird die Ausgabe des gestarteten Programms nicht in einem neuen Konsolenfenster angezeigt, sondern es wird die Konsole des aufrufenden Programms verwendet. Dies ist natürlich nur möglich, wenn das aufrufende Programm ebenfalls ein Windows-Konsolenprogramm ist (beachten Sie, dass Windows zwischen Windows- und Konsolenprogrammen unterscheidet!). Beachten Sie auch, dass dieses Tag nur unter Windows unterstützt wird. Auf allen anderen Plattformen wird die Ausgabe von Konsolenprogrammen automatisch in der Konsole des aufrufenden Programms angezeigt. Der Standardwert ist False. (V11.0)

Hide:
Wenn dieses Tag unter Windows auf True gesetzt ist, öffnen Konsolenprogramme ihr Konsolenfenster nicht, sondern werden im versteckten Modus ausgeführt. Beachten Sie, dass dieses Tag nur unter Windows unterstützt wird. Der Standardwert ist False. (V11.0)

CaptureOutput:
Wenn Sie dieses Tag auf True setzen, erfasst Execute() die Ausgabe des ausgeführten Programms und gibt sie Ihnen im zweiten Rückgabewert zurück. Der erste Rückgabewert wird auf den Rückgabecode des von Execute() ausgeführten Programms gesetzt. Das Gleiche kann auch mit dem Befehl Run() in Verbindung mit den Ereignishandlern RunOutput und RunFinished erreicht werden. Aber dies ist komplizierter. Wenn Sie also keine asynchrone Ausführung benötigen, ist das Setzen des Tags CaptureOutput auf True der einfachste Weg, um die Ausgabe und den Rückgabecode des Programms zu erhalten. (V11.0)

Siehe auch Run() und Exists().

Eingaben
file$
Das zu startende Programm (oder die Datei)
args$
Optional: Argumente, die an das Programm übergeben werden sollen; Beachten Sie, dass Sie diesen Parameter übergeben müssen, um Hollywood zu signalisieren, die neue Syntax zu verwenden. Sie können dies tun, indem Sie einfach eine leere Zeichenfolge ("") angeben; siehe oben für Details (V9.0)
t
Optional: Tabelle mit weiteren Argumenten (siehe oben) (V9.0)
Rückgabewerte
rc
Optional: Der Rückgabecode des Programms; dieser wird nur zurückgegeben, wenn Sie das Tag CaptureOutput auf True gesetzt haben (siehe oben) (V11.0)
output$
Optional: Die Ausgabe des Programms; diese wird nur zurückgegeben, wenn Sie das Tag CaptureOutput auf True gesetzt haben (siehe oben) (V11.0)
Beispiel
Execute("Sys:Prefs/Locale")
Der obige Code führt auf AmigaOS das Einstellungsprogramm Locale aus. Die Ausführung des Skripts wird angehalten, bis der Benutzer das Einstellungsprogramm Locale schließt (synchrone Ausführung).


Execute("Echo >Ram:Test \"Hello World\"")
Auf Systemen mit AmigaOS schreibt der obige Code "Hello World" in "Ram:Test".


Execute("\"C:\\Program Files (x86)\\Hollywood\\ide.exe\"")
Der obige Code führt die Hollywood-IDE auf Windows-Systemen aus. Beachten Sie, dass wir die Programmdekleration in doppelte Anführungszeichen eingebettet haben. Dies ist unbedingt erforderlich, da das erste Leerzeichen in der Zeichenkette, die an Execute() übergeben wird, normalerweise als Trennzeichen zwischen Programm und Argumenten interpretiert wird. Wenn wir keine doppelten Anführungszeichen in dem obigen Code verwendeten, würde Execute() versuchen, das Programm "C:\Program" zu starten und die Argumente "Files (x86)\Hollywood\ide.exe" zu übergeben, was wir offensichtlich nicht wollen. Beachten Sie, dass es seit Hollywood 9.0 jetzt viel einfacher ist, mit Leerzeichen in Pfaden umzugehen. Sie müssen nur die neue Syntax verwenden, die das Programm und seine Argumente in zwei separaten Argumenten verwendet. Mit Hollywood 9.0 können Sie einfach diesen Code verwenden:


Execute("C:\\Program Files (x86)\\Hollywood\\ide.exe", "")
Beachten Sie, dass die Übergabe der leeren Zeichenkette im zweiten Argument hier unbedingt erforderlich ist, um Hollywood zu signalisieren, dass Sie die neue Syntax verwenden möchten. Siehe oben für detaillierte Informationen darüber.

Navigation zeigen