Bezeichnung
Run -- führt eine Datei asynchron aus
Übersicht
Run(file$[, args$, t])
Frühere syntax
Run(cmdline$[, resetkeys, userdata])
Beschreibung
Dieser Befehl führt die in 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:
Mit diesem Tabellenargument können Sie das aktuelle Verzeichnis für das zu startende Programm festlegen. (V9.0)

ResetKeys:
Dieses Tabellenargument 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:
Dieser Tag wird nur verwendet, wenn der Ereignis-Handler 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:
Wenn die Ereignis-Handler für 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:
Wenn Sie einen Ereignis-Handler für 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:
Wenn dieser Tag auf 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:
Dieses Argument kann verwendet werden, um Benutzerdaten anzugeben, die an die Ereignis-Handler 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:
Unter Windows kann dies auf eine Zeichenkette gesetzt werden, der dem Befehl Run() 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 Run() übergeben.

find
Öffnet den Suchdialog für den angegebenen Ordner. Wenn Sie dieses Verb verwenden, müssen Sie statt einer Datei einen Ordner an Run() ü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 Execute() 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
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.

Navigation zeigen