[rc, output$ =] Execute(file$[, args$, t])
Execute(cmdline$[, resetkeys])
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:
ResetKeys: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: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:Execute() mitteilt, was mit der Datei geschehen
soll. Dies kann eines der folgenden Verben sein:
edit
exploreExecute()
übergeben.
findExecute() übergeben.
open
print
runas
Beachten Sie, dass der Tag Verb nur unter Windows unterstützt
wird. (V9.1)
ConsoleMode: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: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: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().
CaptureOutput auf
True gesetzt haben (siehe oben) (V11.0)CaptureOutput auf True
gesetzt haben (siehe oben) (V11.0)
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.