Ersetzt die aktuell laufende Instanz des Skripts mit einer neuen Instanz.
Reload
Dieser Befehl ist für Skripte nützlich, die häufig geändert werden. Sie können diesen Befehl einem Hotkey zuweisen, um das Skript auf einfache Weise neu zu starten, nachdem Sie Ihre Änderungen in einem Texteditor abgespeichert haben.
Standardmäßig kann das Skript auch via Tray-Symbol oder Hauptfenster neu geladen werden.
[v1.1.34+]: Wenn die Befehlszeilenoption /include an die aktuelle Instanz des Skripts übergeben wurde, wird sie automatisch an die neue Instanz übergeben.
Alle anderen Befehlszeilenparameter, die an die aktuelle Instanz des Skripts übergeben wurden, werden nicht an die neue Instanz übergeben. Um solche Parameter zu übergeben, müssen Sie auf Reload verzichten. Verwenden Sie stattdessen Run in Verbindung mit A_AhkPath und A_ScriptFullPath (und A_IsCompiled, sofern das Skript jemals in kompilierter Form zur Verfügung steht). Ein Reload kann auch durchgeführt werden, wenn man die Zeichenkette /restart
im ersten Parameter einfügt (also direkt nach dem Namen der ausführbaren Datei). Siehe auch: Befehlszeilenoptionen und Syntax.
Der Neustart des Skripts erfolgt in seinem originalen Arbeitsverzeichnis (also das Verzeichnis, das zum Zeitpunkt des Erststarts aktiv war). Mit anderen Worten: Das Arbeitsverzeichnis kann nicht geändert werden, selbst dann nicht, wenn man SetWorkingDir in der neuen Instanz benutzen würde.
Wenn das Skript nicht neu geladen werden kann - z. B. aufgrund eines Syntaxfehlers - wird die originale Instanz des Skripts weiter ausgeführt. Demzufolge sollten nach dem Reload-Befehl bestimmte Aktionen erfolgen, die Sie im Falle eines Fehlers durchführen lassen möchten (wie z. B. ein Return, um die aktuelle Subroutine zu beenden). Das folgende Beispiel zeigt, wie die originale Instanz den Fehler ausfindig machen kann:
Reload Sleep 1000 ; Das Reload schließt bei Erfolg diese Instanz während der Sleep-Phase und verhindert, dass nachfolgende Zeilen erreicht werden. MsgBox, 4,, Das Skript konnte nicht neu geladen werden. Möchten Sie das Skript öffnen, um es zu editieren? IfMsgBox, Yes, Edit return
Ältere Instanzen des Skripts werden mit einem Mechanismus identifiziert, der auch bei #SingleInstance zum Einsatz kommt, einschließlich derselben Einschränkungen.
Wenn das Skript mehrere Instanzen von sich selbst zulässt, kann es vorkommen, dass Reload die richtige Instanz nicht erkennt. Die einfachste Alternative ist es, eine neue Instanz via Run zu starten und dann zu beenden. Zum Beispiel:
if A_IsCompiled Run "%A_ScriptFullPath%" /force else Run "%A_AhkPath%" /force "%A_ScriptFullPath%" ExitApp