forked from autohotkey-docs-translation/v1-de
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathHotstrings.htm
212 lines (202 loc) · 31.7 KB
/
Hotstrings.htm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
<!DOCTYPE HTML>
<html lang="de">
<head>
<title>Hotstrings - Definition & Verwendung | AutoHotkey</title>
<meta name="description" content="Erfahren Sie mehr über Hotstrings im Allgemeinen, Endungszeichen, Optionen, lange Ersetzungen, kontextabhängige Hotstrings, Funktions-Hotstrings, etc." />
<meta name="keywords" content="auto-replace,autotext,autocorrect,auto text,auto correct,abbreviation expansion,abbreviation,abbreviations,autoreplace,auto replace,text,expander,free,type,typing,word,words,auto-ersetzen,abkürzungserweiterung,abkürzung,abkürzungen,kostenlos,eingeben,eingabe,wort,wörter">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="static/theme.css" rel="stylesheet" type="text/css" />
<script src="static/content.js" type="text/javascript"></script>
<script src="static/ga.js" type="text/javascript"></script>
</head>
<body>
<h1>Hotstrings</h1>
<h2 id="toc">Inhaltsverzeichnis</h2>
<ul>
<li><a href="#intro">Einführung und einfache Beispiele</a></li>
<li><a href="#EndChars">Endungszeichen</a></li>
<li><a href="#Options">Optionen</a></li>
<li><a href="#continuation">Lange Ersatztexte</a></li>
<li><a href="#variant">Kontextabhängige Hotstrings</a></li>
<li><a href="#AutoCorrect">AutoCorrect</a></li>
<li><a href="#remarks">Bemerkungen</a></li>
<li><a href="#Function">Funktions-Hotstrings</a> <span class="ver">[v1.1.28+]</span></li>
<li><a href="#Helper">Hotstring Helper</a></li>
</ul>
<h2 id="intro">Einführung und einfache Beispiele</h2>
<p>Hotstrings werden genutzt, um geschriebene Abkürzungen in lange Texte umzuwandeln (kurz Auto-Ersetzen) oder um eine gekriptete Aktion zu starten. Grundsätzlich verhalten sich Hotstrings wie <a href="Hotkeys.htm">Hotkeys</a>, außer dass sie üblicherweise aus mehr als einem Zeichen bestehen (also eine Zeichenkette).</p>
<p>Um einen Hotstring zu definieren, umschließen Sie wie folgt die Abkürzung, die ausgelöst werden soll, mit Doppelpunkt-Paaren:</p>
<pre>::bzw::beziehungsweise</pre>
<p>Das Beispiel oben bewirkt, dass die Abkürzung bzw automatisch mit "beziehungsweise" ersetzt wird, sobald Sie sie eingeben (allerdings müssen nach dieser Abkürzung standardmäßig ein <a href="#EndChars">Endungszeichen</a> wie <kbd>Leer</kbd>, <kbd>.</kbd> oder <kbd>Enter</kbd> erfolgen).</p>
<p id="auto">Das "beziehungsweise"-Beispiel oben ist ein sogenannter automatisch-ersetzender Hotstring, weil der eingegebene Text automatisch gelöscht und mit der angegebenen Zeichenkette nach dem zweiten Doppelpunkt-Paar ersetzt wird. Ein Hotstring kann auch definiert werden, um eine beliebige benutzerdefinierte Aktion wie in den folgenden Beispielen durchführen zu lassen. Beachten Sie, dass die Befehle <u>unterhalb</u> des Hotstrings angegeben werden müssen:</p>
<pre>::bzw::
MsgBox Sie haben "bzw" eingegeben.
return
:*:]d:: <em>; Dieser Hotstring ersetzt "]d" mit dem heutigen Datum und der aktuellen Uhrzeit.</em>
<a href="commands/FormatTime.htm">FormatTime</a>, AktuellerZeitstempel,, d.M.yyyy HH:mm <em>; z. B. 21.6.2011 15:10</em>
SendInput %AktuellerZeitstempel%
return</pre>
<p>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 (wiederholendes Löschen des letzten Zeichens), das mit der <a href="#b0">b0-Option</a> deaktiviert werden kann.</p>
<h2 id="EndChars">Endungszeichen</h2>
<p>Standardmäßig muss am Ende der Abkürzung ein <em>Endungszeichen</em> eingegeben werden, um sie auszulösen, es sei denn, die <a href="#Asterisk">Sternchen-Option</a> ist wirksam. Als Endungszeichen gelten standardmäßig die folgenden Zeichen: <strong>-()[]{}':;"/\,.?!`n `t</strong> (`n ist <kbd>Enter</kbd>, `t ist <kbd>Tab</kbd>, und beachte das Leerzeichen zwischen `n und `t). Dieser vordefinierte Zeichensatz kann mit dem folgenden Beispiel geändert werden; beachten Sie aber, dass die neuen Endungszeichen für <u>alle</u> Hotstrings gesetzt werden, nicht nur für Hotstrings, die danach erfolgen:</p>
<pre>#Hotstring EndChars -()[]{}:;'"/\,.?!`n `t</pre>
<p><span class="ver">[v1.1.28+]:</span> Die Endungszeichen können geändert werden, während das Skript läuft, indem man die <a href="commands/Hotstring.htm">Hotstring</a>-Funktion wie folgt aufruft:</p>
<pre>Hotstring("EndChars", "-()[]{}:;")</pre>
<h2 id="Options">Optionen</h2>
<p>Es gibt zwei Möglichkeiten, wie man das Standardverhalten eines Hotstrings ändern kann:</p>
<ol>
<li>Die <a href="commands/_Hotstring.htm">#Hotstring</a>-Direktive, die alle Hotstrings beeinflusst, die sich im Skript physisch darunter befinden. Das folgende Beispiel zeigt, wie man die Optionen C und R aktivieren kann: <code>#Hotstring <strong>c r</strong></code>.</li>
<li>Optionen im ersten Doppelpunktpaar des Hotstrings einfügen. Das folgende Beispiel zeigt, wie man die Optionen C und * (Groß-/Kleinschreibung-sensitiv und "ohne Endungszeichen auslösbar") für einen einzelnen Hotstring wirksam machen kann: <code>:<strong>c*</strong>:j@::[email protected]</code>.</li>
</ol>
<p>Die folgende Liste beschreibt die einzelnen Optionen. Mehrere Optionen können optional mit Leerzeichen voneinander getrennt werden.</p>
<p id="Asterisk"><strong>*</strong> (Sternchen): Der Hotstring kann ohne Endungszeichen (z. B. <kbd>Leer</kbd>, <kbd>.</kbd> oder <kbd>Enter</kbd>) ausgelöst werden. Zum Beispiel:</p>
<pre>:*:j@::[email protected]</pre>
<p>Das Beispiel oben hat den Effekt, dass die Abkürzung mit dem angegebenen Text ersetzt wird, sobald Sie das @-Zeichen eingegeben haben. Verwendet man die <a href="commands/_Hotstring.htm">#Hotstring-Direktive</a>, muss <strong>*0</strong> angegeben werden, um diese Option wieder zu deaktivieren.</p>
<p id="Question"><strong>?</strong> (Fragezeichen): Bewirkt, dass der Hotstring immer ausgelöst wird, egal ob er sich in einem anderen Wort befindet oder nicht; das heißt, dass das davor eingegebene Zeichen alphanumerisch sein kann. Zum Beispiel hätte <code>:?:de::Deutschland</code> den Effekt, dass, sobald man "Fahrstunde " eingegeben hat, "FahrstunDeutschland " erzeugt wird. Mit <strong>?0</strong> kann diese Option wieder deaktiviert werden.</p>
<p id="b0"><strong>B0</strong> (B gefolgt von einer Null): Bewirkt, dass die eingegebene Abkürzung <u>nicht</u> via automatisches Backspacing (wiederholendes Löschen des letzten Zeichens) gelöscht wird. Mit einem einfachen <strong>B</strong> kann das Backspacing, falls es zuvor deaktiviert war, wieder aktiviert werden. Mit {bs 5}, das 5 <kbd>Backspace</kbd>-Tastendrücke sendet, kann ein Skript das Backspacing selbst durchführen. Mit {left 5} können <kbd>←</kbd>-Tastendrücke gesendet werden. Der folgende Hotstring beispielsweise erzeugt "<em></em>" und verschiebt den Textcursor 5 Stellen nach links (so dass er genau zwischen den Tags liegt):</p>
<pre>:*b0:<em>::</em>{left 5}</pre>
<p id="C"><strong>C</strong>: Groß-/Kleinschreibung-sensitiv: Bewirkt, dass der Hotstring nur ausgelöst wird, wenn die Groß- und Kleinschreibung der eingegebenen Abkürzung mit der im Skript definierten Variante übereinstimmt. Mit <strong>C0</strong> kann diese Option wieder deaktiviert werden.</p>
<p id="C1"><strong>C1</strong>: Der Hotstring passt sich nicht der eingegebenen Groß- und Kleinschreibung an. Verwenden Sie diese Option, um <a href="#auto">automatisch-ersetzende Hotstrings</a> nicht-Groß-/Kleinschreibung-sensitiv zu machen und sie daran zu hindern, sich nach der Groß- und Kleinschreibung der eingegebenen Zeichen zu richten. Hotstrings, die Groß- und Kleinschreibung berücksichtigen (die Standardeinstellung), würden ihren Text in Großbuchstaben erzeugen, wenn die eingegebene Abkürzung auch in Großbuchstaben wäre. Würde man den ersten Buchstaben großschreiben, wäre der erste Buchstabe des Ersatztextes auch großgeschrieben (sofern es ein Buchstabe ist). Wenn die Groß- und Kleinschreibung auf irgendeine andere Weise erfolgt, wird der Ersatztext, so wie er definiert wurde, gesendet. Verwendet man die <a href="commands/_Hotstring.htm">#Hotstring-Direktive</a>, muss <strong>C0</strong> angegeben werden, um diese Option wieder zu deaktivieren.</p>
<p id="Kn"><strong>Kn</strong>: Tastenverzögerung: Diese selten verwendete Option bestimmt die Verzögerung zwischen den Tastendrücken, die via Auto-Backspacing oder <a href="#auto">Auto-Ersetzen</a> erzeugt werden. Geben Sie für <strong>n</strong> die neue Verzögerung an; zum Beispiel kann k10 angegeben werden, um eine Verzögerung von 10 ms zu bewirken, und k-1, um die Verzögerung zu deaktivieren. Das genaue Verhalten dieser Option hängt davon ab, welcher <a href="#SendMode">Sendemodus</a> aktiv ist:</p>
<ul>
<li>SI (SendInput): Die Tastenverzögerung wird ignoriert, da in diesem Modus keine Verzögerung möglich ist. Die Ausnahme hiervon ist, wenn SendInput <a href="commands/Send.htm#SendInputUnavail">nicht verfügbar</a> ist, dann greifen die Hotstrings auf den unten genannten SendPlay-Modus zurück (der die Tastenverzögerung berücksichtigen wird).</li>
<li>SP (SendPlay): Standardmäßig gilt eine Verzögerung von 0 ms, das bei SendPlay das gleiche ist wie -1 (keine Verzögerung). In diesem Modus ist die Verzögerung eher die <a href="commands/SetKeyDelay.htm#dur">Druckdauer</a>, als die Verzögerung zwischen den Tastendrücken.</li>
<li>SE (SendEvent): Standardmäßig gilt eine Verzögerung von 0 ms. Eine Verzögerung von 0 ms wird für die meisten Zwecke empfohlen, weil sie kurz und dennoch gut mit anderen Prozessen kooperieren kann (aufgrund der internen Durchführung von <a href="commands/Sleep.htm">Sleep 0</a>). Geben Sie k-1 an, um die Verzögerung komplett zu deaktivieren; dies ist z. B. nützlich, um Auto-Ersetzungen zu beschleunigen, falls Ihre CPU des Öfteren stark belastet wird. Wenn die Verzögerung auf -1 gesetzt wurde, wird die Prozesspriorität des Skripts dahingehend ein wichtiger Faktor sein, wie schnell es Tastendrücke senden kann. Mit <code><a href="commands/Process.htm">Process</a>, Priority,, High</code> kann die Priorität eines Skripts erhöht werden.</li>
</ul>
<p id="O"><strong>O</strong>: Verhindert, dass beim Erstellen des Ersatztextes das Endungszeichen von <a href="#auto">automatisch-ersetzenden Hotstrings</a> enthalten ist. Diese Option ist nützlich, wenn ein Hotstring weiterhin via Endungszeichen ausgelöst werden soll, ohne dass dieses Endungszeichen tatsächlich auf dem Bildschirm zu sehen ist. Zum Beispiel hätte <code>:o:ar::Aristokrat</code> den Effekt, dass, sobald man "ar" gefolgt von einem Leerzeichen eingegeben hat, "Aristokrat" ohne nachfolgendem Leerzeichen erzeugen wird, dadurch kann das Wort in den Plural oder Kasus gesetzt werden, ohne <kbd>Backspace</kbd> verwenden zu müssen. Mit <strong>O0</strong> (Buchstabe O gefolgt von einer Null) kann diese Option wieder deaktiviert werden.</p>
<p id="Pn"><strong>Pn</strong>: Die <a href="misc/Threads.htm">Priorität</a> des Hotstrings (z. B. P1). Diese selten verwendete Option funktioniert nicht bei <a href="#auto">automatisch-ersetzenden Hotstrings</a>.</p>
<p id="raw"><strong>R</strong>: Bewirkt, dass der Ersatztext im <a href="commands/Send.htm#SendRaw">Rohzustand</a> gesendet wird; das heißt, dass keine Umwandlung von {Enter} zu <kbd>Enter</kbd>, ^c zu <kbd>Strg</kbd>+<kbd>C</kbd> und so weiter erfolgt. Diese Option tritt bei Hotstrings, die einen <a href="#continuation">Fortsetzungsbereich</a> haben, automatisch in Kraft. Mit <strong>R0</strong> kann diese Option wieder deaktiviert werden.</p>
<p class="note"><strong>Hinweis:</strong> Der <a href="#T">Text-Modus</a> ist eventuell zuverlässiger. Die Optionen R und T schließen sich gegenseitig aus.</p>
<p id="SendMode"><strong>SI</strong> oder <strong>SP</strong> oder <strong>SE</strong> <span class="ver">[v1.0.43+]:</span> Bestimmt den Modus, mit dem die <a href="#auto">automatisch-ersetzenden Hotstrings</a> ihre Tastendrücke senden sollen. Diese Optionen schließen sich gegenseitig aus; das heißt, dass nur eine Option zur selben Zeit aktiv sein kann. Die folgende Liste beschreibt die einzelnen Optionen:</p>
<ul>
<li>SI steht für <a href="commands/Send.htm#SendInputDetail">SendInput</a>. Dieser Modus ist schneller und zuverlässiger als andere Modi. Außerdem hat SendInput als auch SendPlay (siehe unten) den Vorteil, dass alles, was Sie eingeben, nach hinten verschoben wird, während ein Hotstring ein <a href="#auto">Auto-Ersetzen</a> durchführt. Dadurch wird verhindert, dass die Tastendrücke des Benutzers mit denen des Ersatztextes vermischt werden. Wenn SendInput <a href="commands/Send.htm#SendInputUnavail">nicht zur Verfügung steht</a>, greifen Hotstrings stattdessen auf SendPlay zurück.</li>
<li>SP steht für <a href="commands/Send.htm#SendPlayDetail">SendPlay</a>. Dieser Modus erhöht die Chance, dass Hotstrings in einigen Videospielen funktionieren werden.</li>
<li>SE steht für <a href="commands/Send.htm#SendEvent">SendEvent</a>. Dieser Modus ist der Standardmodus in den Versionen vor 1.0.43.</li>
</ul>
<p>In <span class="ver">[v1.0.43+]</span> ist SendInput der Standardmodus, der mit den oben genannten Optionen überschrieben werden kann. Beachten Sie aber, dass im Gegensatz zur SI-Option SendEvent statt SendPlay verwendet wird, falls SendInput nicht zur Verfügung steht.</p>
<p id="T"><strong>T</strong> <span class="ver">[v1.1.27+]</span>: Sendet den Ersatztext im <a href="#raw">Rohzustand</a>, ohne die Zeichen in Tastendrücke umzuwandeln. Weitere Informationen finden Sie unter <a href="commands/Send.htm#SendText">Text-Modus</a>. Diese Option kann mit <strong>T0</strong> oder <strong>R0</strong> deaktiviert oder mit <strong>R</strong> überschrieben werden.</p>
<p id="X"><strong>X</strong> <span class="ver">[v1.1.28+]</span>: Execute (Ausführen). Anstelle eines Ersatztextes akzeptiert der Hotstring einen Befehl oder Ausdruck, den er ausführen kann. <code>:X:~mb::MsgBox</code> beispielsweise würde bewirken, dass ein Mitteilungsfenster angezeigt wird, wenn der Benutzer "~mb" schreibt, anstatt den Text mit dem Wort "MsgBox" automatisch zu ersetzen. Das ist besonders nützlich, wenn man eine große Anzahl von Hotstrings definiert, die Funktionen aufrufen, da sonst drei Zeilen pro Hotstring notwendig wären.</p>
<p>Wenn die X-Option in Verbindung mit der <a href="commands/Hotstring.htm">Hotstring</a>-Funktion genutzt wird, bewirkt sie, dass der <em>Ersatz</em>-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.</p>
<p id="z"><strong>Z</strong>: Diese selten verwendete Option setzt die Hotstring-Erkennung jedes Mal zurück, wenn der Hotstring ausgelöst wird. Das heißt, dass das Skript auf einen völlig neuen Hotstring wartet und dass alles, was Sie zuvor eingegeben haben, verworfen wird. Dadurch wird verhindert, dass Hotstrings unbeabsichtigt ausgelöst werden können. Schauen Sie sich dazu das folgende Beispiel an:</p>
<pre>:b0*?:11::
SendInput xx
return</pre>
<p>Wenn Sie mit diesem Beispiel drei aufeinanderfolgende Einsen (111) schreiben, wird der Hotstring zweimal ausgelöst, weil die mittlere 1 sowohl das <em>letzte</em> Zeichen vom ersten Auslösen als auch das <em>erste</em> Zeichen vom zweiten Auslösen ist. Sobald Sie den Buchstaben Z vor b0 einfügen, müssten Sie vier statt drei Einsen eingeben, um den Hotstring zweimal auslösen zu können. Mit <strong>Z0</strong> kann diese Option wieder deaktiviert werden.</p>
<h2 id="continuation">Lange Ersatztexte</h2>
<p>Wenn der Ersatztext eines Hotstrings relativ lang ist, kann er via <a href="Scripts.htm#continuation">Fortsetzungsbereich</a> in mehreren kurzen Zeilen aufgeteilt werden, um die Übersichtlichkeit und Wartbarkeit des Skripts zu erhöhen. Zum Beispiel:</p>
<pre>::text1::
(
Der gesamte Text zwischen der oberen und unteren Klammer wird als direkt geschriebener Text behandelt, einschließlich Kommas und Prozentzeichen.
Standardmäßig bleibt das CR-Zeilenumbruchszeichen (Enter) zwischen der vorherigen und dieser Zeile erhalten.
Standardmäßig bleibt die Einrückung (Tabulator) auf der linken Seite dieser Zeile erhalten.
)</pre>
<p>Siehe <a href="Scripts.htm#continuation">Fortsetzungsbereich</a>, wie diese Standardverhalten geändert werden können. Ein Fortsetzungsbereich führt außerdem dazu, dass der Hotstring standardmäßig den <a href="#raw">Raw-Modus</a> verwendet. Dieses Sonderverhalten kann nur überschrieben werden, wenn bei jedem Hotstring, der ein Fortsetzungsbereich hat, die <a href="#raw">r0-Option</a> angegeben wird (z. B. <code>:r0:text1::</code>).</p>
<h2 id="variant">Kontextabhängige Hotstrings</h2>
<p>Mit den Direktiven <a href="commands/_IfWinActive.htm">#IfWinActive/Exist</a> können bestimmte Hotstrings kontextabhängig gemacht werden. Solche Hotstrings werden je nach Typ des aktiven oder vorhandenen Fensters unterschiedliche Ersatztexte senden, andere Aktionen ausführen oder überhaupt nichts tun. Zum Beispiel:</p>
<pre>#IfWinActive ahk_class Notepad
::bzw::Dieser Ersatztext wird nur im Texteditor erscheinen.
#IfWinActive
::bzw::Dieser Ersatztext erscheint nur in einem Fenster, das nicht der Texteditor ist.</pre>
<h2 id="AutoCorrect">AutoCorrect</h2>
<p>Das folgende Skript zeigt, wie Hotstrings zum Korrigieren von ca. 4700 häufig vorkommenden englischen Rechtschreibfehlern benutzt werden können. Mit dem Hotkey <kbd>Win</kbd>+<kbd>H</kbd> können weitere Rechtschreibfehler hinzugefügt werden:</p>
<p>Download: <a href="https://www.autohotkey.com/download/AutoCorrect.ahk">AutoCorrect.ahk</a> (127 KB)</p>
<p>Autor: <a href="http://www.biancolo.com/blog/autocorrect/">Jim Biancolo</a> und <a href="https://en.wikipedia.org/wiki/Wikipedia:Lists_of_common_misspellings">Wikipedia's Lists of Common Misspellings</a></p>
<h2 id="remarks">Bemerkungen</h2>
<p>Aktuell werden innerhalb des Ersatztextes keine Variablenreferenzen wie <code>%MeineVar%</code> unterstützt. Um das zu umgehen, dürfen keine <a href="#auto">automatisch-ersetzende</a> Hotstrings benutzt werden. Schreiben Sie stattdessen einen <a href="commands/Send.htm#SendInput">SendInput</a>-Befehl unter der Abkürzung, gefolgt von einer Zeile, die nur das Wort Return enthält.</p>
<p>Leer- oder Tabulatorzeichen am Ende des Ersatztextes werden standardmäßig verworfen. Damit sie trotzdem gesendet werden, muss ein weiteres Zeichen, ein umgekehrtes Häkchen (`), hinzugefügt werden. Zum Beispiel:</p>
<pre>:*:bzw::beziehungsweise `</pre>
<p id="NoMouse">Standardmäßig wird ein linker oder rechter Mausklick die Hotstring-Erkennung zurücksetzen. Das heißt, dass das Skript auf einen völlig neuen Hotstring warten und dass alles, was Sie zuvor eingegeben haben, verworfen wird (wenn das unerwünscht ist, muss die Zeile <code><a href="commands/_Hotstring.htm">#Hotstring</a> NoMouse</code> irgendwo im Skript eingefügt werden). Dieses "Zurücksetzen bei einem Mausklick" ist standardmäßig so festgelegt, weil jeder Klick üblicherweise den 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 <a href="#Question">Fragezeichen-Option</a> fehlt; 2) einen Hotstring am Auslösen zu hindern, wenn Sie nach einem Mausklick etwas eingeben, das zufällig eine gültige Abkürzung aus der vorherigen Eingabe formt.</p>
<p id="focus-reset">Der Hotstring-Erkenner überprüft jedes Mal das aktive Fenster, wenn ein Zeichen eingegeben wird, und setzt sich zurück, wenn ein anderes Fenster als zuvor aktiv ist. Wenn sich das aktive Fenster ändert, aber zurückgesetzt wird, bevor Zeichen eingegeben werden, wird die Änderung nicht erkannt (aber der Hotstring-Erkenner könnte aus einem anderen Grund zurückgesetzt werden). Man kann den Hotstring-Erkenner auch durch Aufrufen von <code><a href="commands/Hotstring.htm#Reset">Hotstring("Reset")</a></code> zurücksetzen.</p>
<p>Die interne Variable <strong>A_EndChar</strong> enthält das Endungszeichen, mit dem Sie zuletzt einen nicht-automatisch-ersetzenden Hotstring ausgelöst haben. Wenn ein Hotstring nicht mit einem Endungszeichen ausgelöst werden musste (wegen der <a href="#Asterisk">*-Option</a>), wird die Variable leer sein. A_EndChar ist nützlich, wenn Sie Hotstrings haben, die den Send-Befehl verwenden oder sich je nach Endungszeichen unterschiedlich verhalten sollen. Mit <code>SendRaw %A_EndChar%</code> kann das Endungszeichen selbst gesendet werden (in diesem Fall <a href="commands/Send.htm">SendRaw</a>, um zu verhindern, dass Zeichen wie !{}, die eine besondere Bedeutung haben, interpretiert werden).</p>
<p>Innerhalb von Hotstring-Definitionen müssen nur umgekehrte Häkchen und Semikolons, die auf der linken Seite ein Leer- oder Tabulatorzeichen haben, mit einem <a href="commands/_EscapeChar.htm">Escapezeichen</a> versehen werden. Alle anderen Zeichen wie Kommas, Prozentzeichen und einzelne Doppelpunkte können ohne Escapezeichen angegeben werden. Unter <a href="commands/_EscapeChar.htm">Escapesequenzen</a> finden Sie eine komplette Liste.</p>
<p>Die Sonderzeichen des <a href="commands/Send.htm">Send-Befehls</a> wie {Enter} werden nur in den Ersatztexten von <a href="#auto">automatisch-ersetzenden Hotstrings</a> unterstützt (sofern die <a href="#raw">Raw-Option</a> nicht verwendet wird), nicht in den Hotstring-Abkürzungen selbst. Stattdessen kann `n für <kbd>Enter</kbd> und `t (oder ein direkt geschriebenes Tabulatorzeichen) für <kbd>Tab</kbd> angegeben werden (unter <a href="commands/_EscapeChar.htm">Escapesequenzen</a> finden Sie eine komplette Liste). Der Hotstring <code>:*:ab`t::</code> kann beispielsweise ausgelöst werden, wenn Sie "ab" und danach ein Tabulatorzeichen eingeben.</p>
<p>Leer- und Tabulatorzeichen werden innerhalb von Hotstring-Definitionen als direkt geschriebener Text behandelt. Zum Beispiel würden die folgenden Hotstrings zwei unterschiedliche Ergebnisse erzeugen: <code>::bzw::beziehungsweise</code> und <code>::bzw:: :beziehungsweise</code>.</p>
<p>Jede Hotstring-Abkürzung hat eine maximale Länge von 40 Zeichen. Das Programm wird Sie warnen, wenn diese Länge überschritten wurde. Die Länge des Ersatztextes ist hingegen auf ca. 5000 Zeichen begrenzt, sofern der <a href="#SendMode">Sendemodus</a> standardmäßig SendInput ist. Mit jedem anderen <a href="#SendMode">Sendemodus</a> kann dieses Limit auf 16383 Zeichen erhöht werden. Wenn so etwas wie <code><a href="commands/Send.htm#SendPlayDetail">SendPlay</a> %MeineVar%</code> in der Hotstring-Definition angegeben ist, können sogar unendlich viele Zeichen gesendet werden.</p>
<p>Die Reihenfolge, in der die Hotstrings definiert werden, bestimmt ihre relative Priorität zueinander. Das heißt, wenn Ihre Eingabe mehr als einen Hotstring auslösen kann, wird nur der erste im Skript aufgelistete Hotstring in Kraft treten. Verwandtes Thema: <a href="#variant">Kontextabhängige Hotstrings</a>.</p>
<p>Jedes von Ihnen durchgeführte Backspacing wird bei der Erkennung von Hotstrings berücksichtigt. Die Navigationstasten <kbd>↑</kbd>, <kbd>→</kbd>, <kbd>↓</kbd>, <kbd>←</kbd>, <kbd>Bild↑</kbd>, <kbd>Bild↓</kbd>, <kbd>Pos1</kbd> und <kbd>Ende</kbd> bewirken, dass der Hotstring-Erkennungsprozess zurückgesetzt wird. Das heißt, dass der Erkennungsprozess auf einen völlig neuen Hotstring warten wird.</p>
<p>Ein Hotstring kann auch verwendet werden, wenn das aktive Fenster die Tastendrücke des Benutzers ignoriert. Sprich, der Hotstring kann ausgelöst werden, ohne dass die Abkürzung sichtbar sein muss. Auch hier kann die <kbd>Backspace</kbd>-Taste gedrückt werden, um den aktuellsten Tastendruck rückgängig zu machen (selbst wenn der Effekt nicht sehen ist).</p>
<p id="label">Es ist möglich, ein Hotstring-Label als Ziel für <a href="commands/Gosub.htm">Gosub</a> oder <a href="commands/Goto.htm">Goto</a> zu definieren. Um das zu erreichen, muss das erste Doppelpunkt-Paar (einschließlich die Optionssymbole) und die Abkürzung angegeben werden. Zum Beispiel: <code>Gosub ::xyz</code>. Wenn das Ziel allerdings ein <a href="#auto">einzeiliger (automatisch-ersetzender) Hotstring</a> ist, wird nichts anderes als ein <a href="commands/Return.htm">return</a> ausgeführt.</p>
<p>Hotstrings werden während eines unsichtbaren <a href="commands/Input.htm">Input</a>-Befehls weder überwacht noch ausgelöst, aber sie können durch sichtbare Inputs ausgelöst werden.</p>
<p id="InputLevel">Standardmäßig können Hotstrings nicht durch Tastendrücke ausgelöst werden, die ein AutoHotkey-Skript erzeugt hat. Dadurch entfällt die Möglichkeit einer Endlosschleife, in der Hotstrings sich gegenseitig immer und immer wieder auslösen werden. In <span class="ver">[v1.1.06+]</span> kann dieses Verhalten mit <a href="commands/_InputLevel.htm">#InputLevel</a> und <a href="commands/SendLevel.htm">SendLevel</a> kontrolliert werden. Beachten Sie aber, dass automatisch-ersetzende Hotstrings immer eine Sendestufe von 0 haben und deshalb nie <a href="commands/_UseHook.htm">Hook-Hotkeys</a> oder Hotstrings auslösen können.</p>
<p><span class="ver">[v1.1.28+]:</span> Hotstrings können mithilfe der <a href="commands/Hotstring.htm">Hotstring</a>-Funktion dynamisch erstellt werden. Diese Funktion kann zudem im Skript vorhandene Hotstrings einzeln modifizieren, deaktivieren oder aktivieren.</p>
<p>In bestimmten Fällen ist der <a href="commands/Input.htm">Input</a>-Befehl flexibler als Hotstrings. Zum Beispiel bietet dieser Befehl die Möglichkeit, unsichtbare Tastendrücke im aktiven Fenster (z. B. eines Videospiels) zu machen. Zudem unterstützt dieser Befehl zeichenlose Endungstasten wie <kbd>Escape</kbd>.</p>
<p>Jedes Skript, das Hotstrings enthält, benutzt automatisch den <a href="commands/_InstallKeybdHook.htm">Tastatur-Hook</a>.</p>
<p>Hotstrings verhalten sich in einigen Punkten genauso wie Hotkeys:</p>
<ul>
<li>Sie werden vom <a href="commands/Suspend.htm">Suspend</a>-Befehl beeinflusst.</li>
<li>Sie berücksichtigen <a href="commands/_MaxThreads.htm">#MaxThreads</a> und <a href="commands/_MaxThreadsPerHotkey.htm">#MaxThreadsPerHotkey</a> (aber nicht <a href="commands/_MaxThreadsBuffer.htm">#MaxThreadsBuffer</a>).</li>
<li>Skripte, die Hotstrings enthalten, sind automatisch <a href="commands/_Persistent.htm">persistent</a>.</li>
<li>Nicht-automatisch-ersetzende Hotstrings werden einen neuen <a href="misc/Threads.htm">Thread</a> erstellen, sobald sie gestartet werden. Außerdem werden sie die internen Hotkey-Variablen wie <a href="Variables.htm#ThisHotkey">A_ThisHotkey</a> aktualisieren.</li>
</ul>
<p>Bekannte Einschränkung: Auf einigen Systemen kann es vorkommen, dass der Benutzer keine diakritischen Buchstaben (via toter Tasten) eingeben kann, wenn Hotstrings in Verbindung mit Java-Anwendungen benutzt werden. Um das zu umgehen, kann <a href="commands/Suspend.htm">Suspend</a> vorübergehend aktiviert werden (dieser Befehl deaktiviert alle Hotstrings).</p>
<h2 id="Function">Funktions-Hotstrings <span class="ver">[v1.1.28+]</span></h2>
<p>Es ist möglich, einem oder mehreren Hotstrings eine <a href="Functions.htm">Funktion</a> zuzuweisen, indem man sie einfach unterhalb des Hotkey-Labels definiert. Zum Beispiel:</p>
<pre><em>; Dieses Beispiel zeigt zudem eine Möglichkeit, wie man die Konformität der Groß- und Kleinschreibung in einem Skript gewährleisten kann.</em>
:C:BZW:: <em>; Alles großgeschrieben.</em>
:C:Bzw:: <em>; Nur den ersten Buchstaben großgeschrieben.</em>
: :bzw:: <em>; In einer beliebig anderen Kombination geschrieben.</em>
bzw_an_schreibung_anpassen() {
hs := A_ThisHotkey <em>; Für den praktischen Grund und falls wir unterbrochen werden.</em>
if (hs == ":C:BZW")
Send BEZIEHUNGSWEISE
else if (hs == ":C:Bzw")
Send Beziehungsweise
else
Send beziehungsweise
}
</pre>
<p>Zusätzliche Informationen finden Sie unter <a href="Hotkeys.htm#function-details">Funktions-Hotkeys</a>.</p>
<p>Die <a href="commands/Hotstring.htm">Hotstring</a>-Funktion kann auch genutzt werden, um einem Hotstring eine Funktion oder ein Funktionsobjekt zuzuweisen.</p>
<h2 id="Helper">Hotstring Helper</h2>
<p>Andreas Borutta hat das folgende Skript für Benutzer erstellt, die Hotstrings intensiv nutzen wollen. Drücken Sie <kbd>Win</kbd>+<kbd>H</kbd> (oder einen anderen Hotkey Ihrer Wahl), um den aktuell markierten Text in einen Hotstring umzuwandeln. Wenn Sie in einem Textverarbeitungsprogramm zum Beispiel "beziehungsweise" markieren und <kbd>Win</kbd>+<kbd>H</kbd> drücken, wird das Skript Sie auffordern, eine Abkürzung für diesen Text zu bestimmen (z. B. bzw), und dann den neuen Hotstring in das Skript einfügen. Danach wird das Skript neu geladen, um den Hotstring zu aktivieren.</p>
<p class="note"><strong>Hinweis:</strong> Mit der <a href="commands/Hotstring.htm">Hotstring</a>-Funktion können neue Hotstrings erstellt werden, ohne das Skript erneut laden zu müssen. Werfen Sie einen Blick auf das <a href="commands/Hotstring.htm#ExHelper">erste Beispiel</a> im Beispielabschnitt der Funktionsseite, um zu sehen, wie das aussehen könnte.</p>
<pre class="NoIndent">#h:: <em>; Hotkey: WIN+H
; Ermittelt den aktuell markierten Text. Es wird die Zwischenablage statt
; "ControlGet Selected" benutzt, 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):</em>
AutoTrim Off <em>; Verhindert, dass Leerraumzeichen am Anfang oder Ende der Zwischenablage entfernt werden.</em>
ClipboardAlt := ClipboardAll
Clipboard := "" <em>; Muss anfangs leer sein, damit die Erkennung funktioniert.</em>
Send ^c
ClipWait 1
if ErrorLevel <em>; ClipWait hat die Zeit überschritten.</em>
return
<em>; Ersetze CRLF und/oder LF mit `n für einen Hotstring im Raw-Modus:
; Das gleiche wird für jedes andere Zeichen getan,
; das ein Problem im Raw-Modus sein könnte:</em>
StringReplace, Hotstring, Clipboard, ``, ````, All <em>; Zuerst diese Ersetzung, um die darunter nicht zu stören.</em>
StringReplace, Hotstring, Hotstring, `r`n, ``r, All <em>; `r funktioniert besser als `n in MS Word usw.</em>
StringReplace, Hotstring, Hotstring, `n, ``r, All
StringReplace, Hotstring, Hotstring, %A_Tab%, ``t, All
StringReplace, Hotstring, Hotstring, `;, ```;, All
Clipboard := ClipboardAlt <em>; Stell den vorherigen Inhalt der Zwischenablage wieder her.
; Verschiebe den Textcursor der InputBox auf eine benutzerfreundliche Position:</em>
SetTimer, VerschiebeTextcursor, 10
<em>; Zeige die InputBox mit dem vordefinierten Hotstring:</em>
InputBox, Hotstring, Neuer Hotstring, Fügen Sie Ihre Abkürzung an die Position des Textcursors ein. Bei Bedarf können Sie den Ersatztext noch ändern.`n`nBeispieleintrag: :R:bzw`::beziehungsweise,,,,,,,, :R:`::%Hotstring%
if ErrorLevel <em>; Der Benutzer hat Abbrechen gedrückt.</em>
return
if InStr(Hotstring, ":R`:::")
{
MsgBox Sie haben keine Abkürzung angegeben. Der Hotstring wurde nicht hinzugefügt.
return
}
<em>; Füge ansonsten den Hotstring hinzu und lade das Skript neu:</em>
FileAppend, `n%Hotstring%, %A_ScriptFullPath% <em>; Setze ein `n davor, falls die Datei keine leere Zeile am Ende hat.</em>
Reload
Sleep 200 <em>; Das Reload schließt bei Erfolg diese Instanz während der Sleep-Phase und verhindert, dass nachfolgende Zeilen erreicht werden.</em>
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:
IfWinNotActive, Neuer Hotstring
return
<em>; Verschiebe den Textcursor der InputBox auf eine Position, wo der Benutzer die Abkürzung eintragen kann.</em>
Send {Home}{Right 3}
SetTimer, VerschiebeTextcursor, Off
return</pre>
</body>
</html>