Run(file$[, args$, t])
Run(cmdline$[, resetkeys, userdata])
file$
angegebene Datei asynchron
aus und übergibt ihr die in args$
angegebenen Argumente. Falls
Sie ein Programm synchron ausführen möchten, müssen Sie den
Befehl Execute() benutzen.
Wenn asynchrones 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 diesen Befehl eine andere App starten wollen.
Wenn Sie informiert werden möchten, wenn das mit Run()
gestartete
Programm beendet ist, können Sie den Ereignis-Handler RunFinished
mit dem Befehl InstallEventHandler() installieren.
Siehe InstallEventHandler für Details.
Es gibt auch einen Ereignis-Handler namens RunOutput
, der mit
dem Befehl InstallEventHandler()
installiert werden kann. Der Ereignis-Handler RunOutput
leitet
die Programmausgabe an Ihr Programm um, was beispielsweise beim
Schreiben von GUIs für Konsolenprogramme nützlich ist.
Siehe InstallEventHandler für Details.
Beachten Sie, dass es aus historischen Gründen einige Fallstricke
bei der Verwendung von diesem Befehl gibt. Vor Hollywood 9.0
erwartete dieser Befehl Programm und Argumente, die in nur einer
einzigen cmdline$
-Zeichenkette kombiniert wurden. 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 eine 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 vom optionalen Tabellenargument unterstützt:
Directory:
ResetKeys:
resetkeys
ist nur interessant für fortgeschrittene
Anwender. Wenn dies auf False
gesetzt ist, wird Run()
nicht
alle internen Tastenzustände zurücksetzten, nachdem das Programm
ausgeführt wurde. Standardmäßig werden alle Tastenzustände
zurückgesetzt, wenn Run()
beendet ist, weil Programme unter
Verwendung von Run()
oft den Tastaturfokus übernehmen, wird Hollywood
möglicherweise nicht in der Lage sein, die internen Status-Flags
zurückzugsetzten. Aus diesem Grund werden standardmäßig mit Run()
alle internen Tastenzustände zurückgesetzt, wenn dieser Befehl
beendet ist. Es könnte dann Sinn machen, dieses Verhalten zu
deaktivieren, wenn Sie Run()
für den Start von Programmen verwenden,
die nicht über eine GUI verfügen und nicht den Tastaturfokus
wegnehmen. Voreingestellt ist True
. (V5.1)
RawMode:
RunOutput
aktiv ist. Standardmäßig erwartet der Ereignis-Handler RunOutput
,
dass Programme nur Text ausgeben. Aus diesem Grund stellt RunOutput
sicher, dass nur korrekt UTF-8-codierter Text an Ihre Callback-Funktion
übergeben wird. Wenn Sie nicht möchten, dass RunOutput
den
Text als UTF-8 formatiert, müssen Sie beim Aufruf von Run()
das Argument RawMode
auf True
setzen. In diesem Fall führt RunOutput
keine Vorformatierung durch und leitet nur die Rohausgabe des
Programms an Sie weiter. Das bedeutet, dass Ihr Callback-Ereignis-Handler
bereit sein muss, auch Binärdaten zu verarbeiten. Der Standardwert
ist False
. (V9.0)
IgnoreHandlers:
RunFinished
oder RunOutput
installiert
sind, werden diese Handler automatisch ausgelöst, wenn Run()
aufgerufen wird. Wenn Sie möchten, dass diese Ereignis-Handler
nur für bestimmte Aufrufe von Run()
ausgelöst werden, können
Sie diesen Tag verwenden, um Run()
mitzuteilen, welche Ereignis-Handler
ignoriert werden sollen. Dies muss auf eine Zeichenkette gesetzt
werden, der die zu ignorierenden Ereignis-Handler enthält. Mehrere
Ereignis-Handler müssen durch einen vertikalen Strich '|'getrennt
werden. Zum Beispiel würde das Setzen von IgnoreHandlers
auf
RunFinished|RunOutput
Run()
anweisen, keine Ereignisse
für die beiden Ereignis-Handler RunFinished
und RunOutput
auszulösen. (V9.0)
ReturnCode:
RunFinished
installiert haben,
können Sie diesen Tag auf True
setzen, um anzugeben, dass Ihr
Ereignis-Handler beim Beenden auch den Rückgabecode des Programms
erhalten soll. Beachten Sie, dass Hollywood beim Setzen von
diesem Tag auf True
unter AmigaOS 4 und MorphOS nicht beendet
werden kann, bevor das mit Run()
gestartete Programm beendet
ist. Die Voreinstellung ist False
. (V9.0)
ForceExe:
True
gesetzt ist, behandelt Run()
die in
file$
übergebene Datei immer als ausführbare Datei. 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 Anzeigeprogramm
für die Datendatei zu starten. Daher funktioniert der Versuch,
Run()
auf eine ausführbare Datei mit dem Namen "test.exe" anzuwenden,
aufgrund der Erweiterung *.exe unter Linux und macOS nicht.
Indem Sie ForceExe
auf True
setzen, können Sie sie jedoch zum
Laufen bringen. Die Voreinstellung ist False
. (V9.0)
UserData:
RunFinished
und RunOutput
übergeben
werden sollen, die über den Befehl InstallEventHandler()
installiert werden können. Siehe InstallEventHandler für Details.
Die hier angegebenen Benutzerdaten können beliebigen Typs sein. (V6.1)
Verb:
Run()
mitteilt, was mit der Datei geschehen
soll. Dies kann eines der folgenden Verben sein:
edit
explore
Run()
übergeben.
find
Run()
übergeben.
open
print
runas
Beachten Sie, dass der Tag Verb
nur unter Windows unterstützt
wird. (V9.1)
Siehe auch Execute() und Exists().
Run("Sys:Prefs/Locale")Der obige Code führt das Einstellungsprogramm Locale auf AmigaOS aus. Ihr Skript wird sofort nach dem Ausführen des Programmes Locale fortgesetzt (asynchrone Ausführung).
Run("\"C:\\Program Files (x86)\\Hollywood\\ide.exe\"")Der obige Code wird die Hollywood IDE auf Windows-Systemen starten. Beachten Sie, dass wir die Programmdekleration in doppelte Anführungszeichen eingebettet haben. Dies ist unbedingt notwendig, da das erste Leerzeichen in der Zeichenfolge normalerweise als Trennzeichen zwischen Programm und Argumente interpretiert wird. Wenn wir keine doppelte Anführungszeichen im obigen Code verwenden würden, würde
Run()
versuchen, das Programm
"C:\Program" zu starten und die Argumente "Files (x86)\Hollywood\ide.exe"
zu übergeben, das 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:
Run("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. Ausführliche Informationen dazu finden Sie oben.