Hotstrings werden hauptsächlich verwendet, um geschriebene Abkürzungen in lange Texte umzuwandeln (kurz Auto-Ersetzen), aber auch, um eine geskriptete Aktion zu starten. Im Prinzip verhalten sich Hotstrings wie Hotkeys, außer dass sie in der Regel aus mehr als einem Zeichen (also einer Zeichenkette) bestehen.
Um einen Hotstring zu definieren, umschließen Sie die auslösende Abkürzung mit Doppelpunktpaaren. Zum Beispiel:
::bzw::beziehungsweise
Das obige Beispiel hat die folgende Wirkung: Jedes Mal, wenn Sie die Abkürzung "bzw" eingeben, wird diese automatisch mit "beziehungsweise" ersetzt (allerdings geschieht das standardmäßig nur, wenn Sie nach der Eingabe von "bzw" ein Endungszeichen wie Leer, . oder Enter eingeben).
Das "beziehungsweise"-Beispiel oben ist ein sogenannter automatisch-ersetzender Hotstring. Er löscht automatisch den eingegebenen Text und ersetzt ihn mit der Zeichenkette nach dem zweiten Doppelpunktpaar. Ein Hotstring kann auch verwendet werden, um eine benutzerdefinierte Aktion auszuführen, wie in den folgenden Beispielen. Beachten Sie, dass die Befehle unterhalb des Hotstrings angegeben werden müssen:
::bzw:: MsgBox Sie haben "bzw" eingegeben. return :*:]d:: ; Dieser Hotstring ersetzt "]d" mit dem heutigen Datum via den Befehlen unten. FormatTime, AktuellerZeitstempel,, d.M.yyyy HH:mm ; z.B. 21.6.2011 15:10 SendInput %AktuellerZeitstempel% return
Obwohl die beiden Beispiele oben keine automatisch-ersetzende Hotstrings sind, wird auch hier die eingegebene Abkürzung standardmäßig gelöscht. Dieses Löschen erfolgt durch automatisches Backspacing (wiederholtes Löschen des letzten Zeichens), was mit der b0-Option deaktiviert werden kann.
Um einen Hotstring auszulösen, müssen Sie standardmäßig nach der Eingabe der Abkürzung ein Endungszeichen eingeben (was aber mit der Sternchen-Option geändert werden kann). Zu den Endungszeichen gehören standardmäßig die folgenden: -()[]{}':;"/\,.?!`n `t (`n ist Enter und `t ist Tab; zwischen `n und `t befindet sich ein Leerzeichen). Dieser vordefinierte Zeichensatz kann mit dem folgenden Beispiel geändert werden; beachten Sie aber, dass die neuen Endungszeichen für alle Hotstrings gesetzt werden, nicht nur für Hotstrings, die danach folgen:
#Hotstring EndChars -()[]{}:;'"/\,.?!`n `t
[v1.1.28+]: Die Endungszeichen können während der Skriptausführung geändert werden, indem man die Hotstring-Funktion wie folgt aufruft:
Hotstring("EndChars", "-()[]{}:;")
Es gibt zwei Möglichkeiten, wie das Standardverhalten eines Hotstrings geändert werden kann:
#Hotstring c r
.:c*:j@::john@somedomain.com
.Die folgende Liste beschreibt die einzelnen Optionen. Mehrere Optionen können optional mit Leerzeichen voneinander getrennt werden.
* (Sternchen): Der Hotstring kann ohne Endungszeichen (z.B. Leer, . oder Enter) ausgelöst werden. Zum Beispiel:
:*:j@::jsmith@somedomain.com
Das obige Beispiel sendet seinen Ersatztext, sobald Sie das @-Zeichen eingegeben haben. Mit *0 (unter Nutzung der #Hotstring-Direktive) kann diese Option wieder deaktiviert werden.
? (Fragezeichen): Bewirkt, dass der Hotstring immer ausgelöst wird, egal ob er sich in einem anderen Wort befindet oder nicht, d.h. das davor eingegebene Zeichen kann alphanumerisch sein. Wenn Sie zum Beispiel den Hotstring :?:de::Deutschland
verwenden, würde die Eingabe von "Fahrstunde " dazu führen, dass "FahrstunDeutschland " erzeugt wird. Mit ?0 kann diese Option wieder deaktiviert werden.
B0 (B gefolgt von einer Null): Bewirkt, dass die eingegebene Abkürzung nicht via automatisches Backspacing (wiederholtes Löschen des letzten Zeichens) gelöscht wird. Mit B kann das Backspacing, falls es zuvor deaktiviert war, wieder aktiviert werden. Mit {bs 5}, das Backspace fünfmal sendet, kann ein Skript das Backspacing selbst durchführen. Mit {left 5} kann ← fünfmal gesendet werden. Der folgende Hotstring beispielsweise erzeugt "<em></em>" und verschiebt den Textcursor 5 Stellen nach links (so dass der Textcursor genau zwischen den Tags liegt):
:*b0:<em>::</em>{left 5}
C: Groß-/Kleinschreibung-sensitiv: Bewirkt, dass der Hotstring nur dann ausgelöst wird, wenn die Groß-/Kleinschreibung der eingegebenen Abkürzung exakt mit der im Skript definierten Variante übereinstimmt. Mit C0 kann diese Option wieder deaktiviert werden.
C1: Nicht an die Groß-/Kleinschreibung anpassen. Verwenden Sie diese Option, um automatisch-ersetzende Hotstrings nicht-Groß-/Kleinschreibung-sensitiv zu machen und zu verhindern, dass sie sich an die Groß-/Kleinschreibung der von Ihnen eingegebenen Zeichen anpassen. Groß-/Kleinschreibung-anpassende Hotstrings (Standardeinstellung) erzeugen den Ersatztext komplett in Großbuchstaben, wenn Sie die Abkürzung komplett in Großbuchstaben eingeben. Wenn Sie den ersten Buchstaben großschreiben, wird auch der erste Buchstabe des Ersatztextes großgeschrieben (sofern es ein Buchstabe ist). Wenn Sie die Groß-/Kleinschreibung auf eine andere Weise eingeben, wird der Ersatztext ohne Änderung der Groß-/Kleinschreibung gesendet. Mit C0 (unter Nutzung der #Hotstring-Direktive) kann diese Option wieder deaktiviert werden.
Kn: Tastenverzögerung: Diese selten verwendete Option bestimmt die Verzögerung zwischen den Tastendrücken, die via Auto-Backspacing oder Auto-Ersetzen erzeugt werden. Geben Sie für n die neue Verzögerung an, z.B. k10 für eine Verzögerung von 10 ms oder k-1 zum Deaktivieren der Verzögerung. Das genaue Verhalten dieser Option hängt vom gerade aktiven Send-Modus ab:
Process, Priority,, High
.O: Bewirkt, dass automatisch-ersetzende Hotstrings ihren Ersatztext ohne Endungszeichen erzeugen. Diese Option ist nützlich, wenn Sie weiterhin mit einem Endungszeichen verhindern wollen, dass der Hotstring versehentlich ausgelöst wird, aber gleichzeitig auch erreichen wollen, dass dieses Endungszeichen nicht auf dem Bildschirm erscheint. Verwenden Sie zum Beispiel den Hotstring :o:ar::Aristokrat
, würde die Eingabe von "ar" gefolgt von einem Leerzeichen dazu führen, dass "Aristokrat" ohne Leerzeichen am Ende erzeugt wird, was Ihnen z.B. die Möglichkeit bietet, das Wort in den Plural zu setzen, ohne Backspace verwenden zu müssen. Mit O0 (Buchstabe O gefolgt von einer Null) kann diese Option wieder deaktiviert werden.
Pn: Die Priorität des Hotstrings (z.B. P1). Diese Option wird selten verwendet und funktioniert nicht bei automatisch-ersetzenden Hotstrings.
R: Bewirkt, dass der Ersatztext im Rohzustand gesendet wird, d.h. es findet keine Übersetzung von {Enter} zu Enter, ^c zu Strg+C usw. statt. Diese Option wird automatisch für Hotstrings aktiviert, die einen Fortsetzungsbereich haben. Mit R0 kann diese Option wieder deaktiviert werden.
Hinweis: Der Text-Modus kann für das Senden von Text zuverlässiger sein. Die Optionen R und T schließen sich gegenseitig aus.
SI oder SP oder SE [v1.0.43+]: Bestimmt den Modus, den automatisch-ersetzende Hotstrings zum Senden ihrer Tastendrücke verwenden. Diese Optionen schließen sich gegenseitig aus, d.h. es kann immer nur eine Option aktiv sein. Die folgende Liste beschreibt die einzelnen Optionen:
In [v1.0.43+] ist SendInput der Standardmodus. Anders als bei der SI-Option wird jedoch SendEvent anstelle von SendPlay verwendet, wenn SendInput nicht verfügbar ist.
T [v1.1.27+]: Sendet den Ersatztext im Rohzustand, ohne die Zeichen in Tastendrücke zu übersetzen. Weitere Informationen finden Sie unter Text-Modus. Diese Option kann mit T0 oder R0 wieder deaktiviert oder mit R überschrieben werden.
X [v1.1.28+]: Execute (Ausführen). Anstelle eines Ersatztextes akzeptiert der Hotstring einen Befehl oder Ausdruck, den er ausführen soll. Zum Beispiel würde :X:~mb::MsgBox
ein Mitteilungsfenster anzeigen, wenn der Benutzer "~mb" eingibt, anstatt diese Abkürzung automatisch mit "MsgBox" zu ersetzen. Das ist besonders für eine große Anzahl von Hotstrings nützlich, die Funktionen aufrufen, da sonst drei Zeilen pro Hotstring notwendig wären.
Wenn die X-Option in Verbindung mit der Hotstring-Funktion verwendet wird, bewirkt sie, dass der Ersatz-Parameter als Label- oder Funktionsname statt als Ersatztext interpretiert wird. Allerdings hat die X-Option diesen Effekt nur, wenn sie bei jedem Aufruf der Funktion angegeben ist.
Z: Diese selten verwendete Option setzt den Hotstring-Erkenner jedes Mal zurück, wenn der Hotstring ausgelöst wird. Mit anderen Worten, das Skript wartet auf einen völlig neuen Hotstring und verwirft alles, was Sie zuvor eingegeben haben. Dadurch können unerwünschte Auslösungen von Hotstrings verhindert werden. Schauen Sie sich dazu das folgende Beispiel an:
:b0*?:11:: SendInput xx return
Wenn Sie mit diesem Beispiel drei aufeinanderfolgende Einsen (111) eingeben, wird der Hotstring zweimal ausgelöst, weil die mittlere 1 sowohl das letzte Zeichen der ersten Auslösung als auch das erste Zeichen der zweiten Auslösung ist. Wenn Sie vor b0 den Buchstaben Z einfügen, müssten Sie vier statt drei Einsen eingeben, um den Hotstring zweimal auszulösen. Mit Z0 kann diese Option wieder deaktiviert werden.
Wenn der Ersatztext eines Hotstrings relativ lang ist, kann er via Fortsetzungsbereich in mehrere kurze Zeilen aufgeteilt werden, um die Übersichtlichkeit und Wartbarkeit des Skripts zu verbessern. Zum Beispiel:
::text1:: ( Der gesamte Text zwischen der oberen und unteren Klammer wird als direkt geschriebener Text behandelt, einschließlich Kommas und Prozentzeichen. Standardmäßig bleibt der Zeilenumbruch (Enter) zwischen der vorherigen und dieser Zeile erhalten. Standardmäßig bleibt die Einrückung (Tabulator) auf der linken Seite dieser Zeile erhalten. )
Unter Fortsetzungsbereich erfahren Sie, wie Sie dieses Standardverhalten ändern können. Beachten Sie auch, dass ein Fortsetzungsbereich dazu führt, dass der Hotstring standardmäßig den Raw-Modus verwendet. Die einzige Möglichkeit, dies zu überschreiben, besteht darin, bei jedem Hotstring mit einem Fortsetzungsbereich die r0-Option anzugeben (z.B. :r0:text1::
).
Mit den Direktiven #IfWinActive/Exist können bestimmte Hotstrings kontextabhängig gemacht werden. Solche Hotstrings können je nach aktivem oder existierendem Fenster einen anderen Ersatztext senden, eine andere Aktion ausführen oder gar nichts tun. Zum Beispiel:
#IfWinActive ahk_class Notepad ::bzw::Dieser Ersatztext erscheint nur in Notepad. #IfWinActive ::bzw::Dieser Ersatztext erscheint in einem anderen Fenster als Notepad.
Das folgende Skript verwendet Hotstrings zum automatischen Korrigieren von ca. 4700 häufig vorkommenden englischen Rechtschreibfehlern. Mit dem Hotkey Win+H können Sie weitere Rechtschreibfehler hinzufügen:
Download: AutoCorrect.ahk (127 KB)
Autor: Jim Biancolo und Wikipedia's Lists of Common Misspellings
Variablenreferenzen wie %MeineVar%
werden im Ersatztext aktuell nicht unterstützt. Um das zu umgehen, machen Sie solche Hotstrings nicht automatisch-ersetzend. Verwenden Sie stattdessen einen SendInput-Befehl unter der Abkürzung, gefolgt von einer Zeile nur mit dem Wort Return.
Um ein zusätzliches Leer- oder Tabulatorzeichen nach einem Ersatztext zu senden, fügen Sie es am Ende des Ersatztextes ein, aber machen Sie das letzte Zeichen zu einem umgekehrten Häkchen (`). Zum Beispiel:
:*:bzw::beziehungsweise `
Standardmäßig setzt ein Links- oder Rechtsklick den Hotstring-Erkenner zurück. Mit anderen Worten, das Skript wartet auf einen völlig neuen Hotstring und verwirft alles, was Sie zuvor eingegeben haben (falls das unerwünscht ist, fügen Sie irgendwo im Skript die Zeile #Hotstring NoMouse
ein). Dieses Zurücksetzen-bei-Mausklick-Verhalten ist standardmäßig aktiv, weil jeder Klick üblicherweise die Texteinfügemarke (Textcursor) verschiebt oder den Tastaturfokus auf ein neues Steuerelement/Feld setzt. In solchen Fällen ist es generell wünschenswert: 1) einen Hotstring auch dann auslösen zu können, wenn die Fragezeichenoption fehlt; 2) eine Auslösung zu verhindern, wenn Sie nach einem Mausklick etwas eingeben, das zufällig eine gültige Abkürzung aus der vorherigen Eingabe formt.
Der Hotstring-Erkenner prüft jedes Mal, wenn ein Zeichen eingegeben wird, das aktive Fenster und setzt sich zurück, wenn ein anderes als das vorherige Fenster aktiv ist. Wenn sich das aktive Fenster ändert, aber dann das vorherige Fenster wieder aktiv gemacht wird, bevor ein Zeichen eingegeben wurde, wird die Änderung nicht erkannt (aber der Hotstring-Erkenner könnte aus einem anderen Grund zurückgesetzt werden). Sie können den Hotstring-Erkenner auch mit Hotstring("Reset")
zurücksetzen.
Die interne Variable A_EndChar enthält das Endungszeichen, mit dem Sie zuletzt einen nicht-automatisch-ersetzenden Hotstring ausgelöst haben. Wenn kein Endungszeichen erforderlich war (wegen der *-Option), ist diese Variable leer. A_EndChar ist nützlich bei der Erstellung von Hotstrings, die den Send-Befehl verwenden oder deren Verhalten davon abhängen soll, welches Endungszeichen Sie eingegeben haben. Mit SendRaw %A_EndChar%
kann das Endungszeichen selbst gesendet werden (in diesem Fall SendRaw, weil das normale Send Zeichen wie !{} nicht korrekt senden würde).
Innerhalb von Hotstring-Definitionen müssen nur umgekehrte Häkchen und Semikolons, denen ein Leer- oder Tabulatorzeichen vorangestellt ist, mit einem Escapezeichen versehen werden. Alle anderen Zeichen, inklusive Kommas, Prozentzeichen und einzelne Doppelpunkte, können ohne Escapezeichen angegeben werden. Eine vollständige Liste finden Sie unter Escapesequenzen.
Die Sonderzeichen des Send-Befehls wie {Enter} werden nur im Ersatztext von automatisch-ersetzenden Hotstrings unterstützt (sofern die Raw-Option nicht verwendet wird), nicht in der Abkürzung. Geben Sie stattdessen `n für Enter und `t (oder ein direkt geschriebenes Tabulatorzeichen) für Tab an (eine vollständige Liste finden Sie unter Escapesequenzen). Zum Beispiel würde der Hotstring :*:ab`t::
ausgelöst werden, wenn Sie "ab" gefolgt von einem Tabulatorzeichen eingeben.
Innerhalb von Hotstring-Definitionen werden Leer- und Tabulatorzeichen als direkt geschriebener Text behandelt. Zum Beispiel würden die folgenden Hotstrings zwei unterschiedliche Ergebnisse erzeugen: ::bzw::beziehungsweise
und ::bzw:: :beziehungsweise
.
Jede Abkürzung eines Hotstrings darf nicht länger als 40 Zeichen sein. Das Programm warnt Sie, wenn diese Länge überschritten wurde. Die Länge des Ersatztextes ist hingegen auf ca. 5000 Zeichen begrenzt, sofern der Send-Modus standardmäßig SendInput ist. Dieses Limit kann auf 16383 Zeichen erhöht werden, wenn Sie einen der anderen Send-Modi verwenden. Alternativ können Sie auch so etwas wie SendPlay %MeineVariable%
im Körper des Hotstrings verwenden, um eine unbegrenzte Menge an Text zu senden.
Die Reihenfolge, in der die Hotstrings definiert werden, bestimmt ihre relative Priorität zueinander. Mit anderen Worten, wenn Ihre Eingabe mehr als einen Hotstring auslösen kann, wird nur der erste im Skript gelistete Hotstring ausgelöst. Siehe auch: Kontextabhängige Hotstrings.
Jedes von Ihnen durchgeführte Backspacing wird bei der Erkennung von Hotstrings berücksichtigt. Allerdings bewirken die Navigationstasten ↑, →, ↓, ←, Bild↑, Bild↓, Pos1 und Ende, dass der Hotstring-Erkennungsprozess zurückgesetzt wird. Mit anderen Worten, der Erkennungsprozess wartet auf einen völlig neuen Hotstring.
Der Ersatztext könnte auch dann gesendet werden, wenn das aktive Fenster die Tastendrücke des Benutzers ignoriert. Das heißt, der Hotstring wird auch ohne sichtbare Eingabe der Abkürzung ausgelöst. Auch hier können Sie Backspace drücken, um den letzten Tastendruck rückgängig zu machen (auch wenn Sie den Effekt nicht sehen).
Es ist möglich, mit Gosub oder Goto zu einem Hotstring-Label zu springen. Fügen Sie einfach das erste Doppelpunktpaar (einschließlich der Optionssymbole) vor seinem Namen ein. Zum Beispiel: Gosub ::xyz
. Wenn das Ziel allerdings ein einzeiliger (automatisch-ersetzender) Hotstring ist, wird nur ein Return ausgeführt.
Hotstrings werden weder überwacht noch während eines unsichtbaren Input-Befehls ausgelöst, können aber durch sichtbare Inputs ausgelöst werden.
Standardmäßig können Hotstrings nicht durch Tastendrücke ausgelöst werden, die von einem AutoHotkey-Skript erzeugt wurden. Dadurch wird vermieden, dass eine Endlosschleife entsteht, in der sich Hotstrings immer wieder gegenseitig auslösen. In [v1.1.06+] kann dieses Verhalten mit #InputLevel und SendLevel kontrolliert werden. Allerdings verwenden automatisch-ersetzende Hotstrings immer Sendlevel 0 und können daher niemals Hook-Hotkeys oder Hotstrings auslösen.
[v1.1.28+]: Hotstrings können dynamisch erstellt werden, z.B. mit der Hotstring-Funktion, die auch in der Lage ist, bestehende Hotstrings einzeln zu modifizieren, zu deaktivieren oder zu aktivieren.
In bestimmten Fällen ist der Input-Befehl flexibler als Hotstrings. Zum Beispiel sind damit unsichtbare Tastendrücke im aktiven Fenster (z.B. eines Videospiels) möglich. Außerdem werden zeichenlose Endungstasten wie Esc unterstützt.
Jedes Skript, das Hotstrings enthält, verwendet automatisch den Tastatur-Hook.
Hotstrings verhalten sich in einigen Punkten genauso wie Hotkeys:
Bekannte Einschränkung: Auf einigen Systemen können Hotstrings in Java-Anwendungen die Eingabe diakritischer Buchstaben (über tote Tasten) stören. Um das zu umgehen, schalten Sie Suspend vorübergehend ein (Suspend deaktiviert alle Hotstrings).
Es ist möglich, einem oder mehreren Hotstrings eine Funktion zuzuweisen, indem man sie einfach unterhalb des Hotstring-Labels definiert. Zum Beispiel:
; Zeigt auch die Implementierung von Groß-/Kleinschreibung-Anpassung. :C:BZW:: ; Alles großgeschrieben. :C:Bzw:: ; Nur den ersten Buchstaben großgeschrieben. : :bzw:: ; In einer beliebig anderen Kombination geschrieben. bzw_an_schreibung_anpassen() { hs := A_ThisHotkey ; Aus praktischen Gründen und falls wir unterbrochen werden. if (hs == ":C:BZW") Send BEZIEHUNGSWEISE else if (hs == ":C:Bzw") Send Beziehungsweise else Send beziehungsweise }
Zusätzliche Informationen finden Sie unter Funktions-Hotkeys.
Mit der Hotstring-Funktion kann einem Hotstring auch eine Funktion oder ein Funktionsobjekt zugewiesen werden.
Andreas Borutta hat das folgende Skript geschrieben, das nützlich sein könnte, wenn Sie viel mit Hotstrings arbeiten. Drücken Sie Win+H (oder einen anderen Hotkey Ihrer Wahl), um den aktuell markierten Text zu einem Hotstring zu machen. Wenn Sie z.B. in einem Textverarbeitungsprogramm "beziehungsweise" markieren und Win+H drücken, wird das Skript Sie auffordern, eine Abkürzung für diesen Text einzugeben (z.B. bzw), und dann den neuen Hotstring in das Skript einfügen. Danach wird das Skript neu geladen, um den Hotstring zu aktivieren.
Hinweis: Mit der Hotstring-Funktion können neue Hotstrings erstellt werden, ohne dass das Skript neu geladen werden muss. Schauen Sie sich das erste Beispiel im Beispielabschnitt der Funktionsseite an, um einen Eindruck zu bekommen, wie das aussehen könnte.
#h:: ; Hotkey: WIN+H ; Ruft den aktuell markierten Text ab. Es wird die Zwischenablage statt ; "ControlGet Selected" verwendet, um das Skript für mehr Texteditoren ; funktionsfähig zu machen. Speichert die aktuelle Zwischenablage und ; stellt sie später wieder her (allerdings funktioniert das nur mit ; reinem Text): AutoTrim Off ; Verhindert, dass Leerraumzeichen am Anfang oder Ende der Zwischenablage entfernt werden. ClipboardAlt := ClipboardAll Clipboard := "" ; Muss vorerst leer sein, damit die Erkennung funktioniert. Send ^c ClipWait 1 if ErrorLevel ; ClipWait hat das Zeitlimit überschritten. return ; Ersetze CRLF und/oder LF mit `n für einen Hotstring im Raw-Modus: ; Dasselbe wird für jedes andere Zeichen getan, ; das ein Problem im Raw-Modus sein könnte: StringReplace, Hotstring, Clipboard, ``, ````, All ; Zuerst diese Ersetzung, um die darunter nicht zu stören. StringReplace, Hotstring, Hotstring, `r`n, ``n, All StringReplace, Hotstring, Hotstring, `n, ``n, All StringReplace, Hotstring, Hotstring, %A_Tab%, ``t, All StringReplace, Hotstring, Hotstring, `;, ```;, All Clipboard := ClipboardAlt ; Den vorherigen Inhalt der Zwischenablage wiederherstellen. ; Den Textcursor des Eingabefensters auf eine benutzerfreundliche Position verschieben: SetTimer, VerschiebeTextcursor, 10 ; Das Eingabefenster mit dem vordefinierten Hotstring anzeigen: InputBox, Hotstring, Neuer Hotstring, Fügen Sie Ihre Abkürzung an der Position des Textcursors ein. Bei Bedarf können Sie den Ersatztext noch ändern.`n`nBeispieleintrag: :R:bzw::beziehungsweise,,,,,,,, :R:::%Hotstring% if ErrorLevel ; Der Benutzer hat Abbrechen gedrückt. return if InStr(Hotstring, ":R:::") { MsgBox Sie haben keine Abkürzung angegeben. Der Hotstring wurde nicht hinzugefügt. return } ; Andernfalls den Hotstring hinzufügen und das Skript neu laden: FileAppend, `n%Hotstring%, %A_ScriptFullPath% ; `n davorsetzen, wenn die Datei keine Leerzeile am Ende hat. Reload Sleep 200 ; Bei Erfolg wird Reload diese Instanz während des Sleeps schließen, wodurch die folgende Zeile nie erreicht wird. MsgBox, 4,, Der gerade eingefügte Hotstring scheint fehlerhaft zu sein. Wollen Sie das Skript öffnen und manuell bearbeiten? Den fehlerhaften Hotstring finden Sie ganz unten im Skript. IfMsgBox, Yes, Edit return VerschiebeTextcursor: if not WinActive("Neuer Hotstring") return ; Andernfalls den Textcursor des Eingabefensters auf eine Position verschieben, wo der Benutzer die Abkürzung eintragen kann. Send {Home}{Right 3} SetTimer, VerschiebeTextcursor, Off return