Bezeichnung
Execute -- führt eine Datei synchron aus
Übersicht
Execute(file$[, args$, t])
Frühere syntax
Execute(cmdline$[, resetkeys])
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 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)

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)
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