AHK-Skripte unter verschiedenen Windows-Versionen: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 9: | Zeile 9: | ||
return | return | ||
== Windows 95/98/ | == Windows 95/98/ME == | ||
Die neue ''#IfWin...''-Methode wird hier leider nicht vollständig unterstützt, und dies ist auch für die Zukunft nicht geplant. | Die neue ''#IfWin...''-Methode wird hier leider nicht vollständig unterstützt, und dies ist auch für die Zukunft nicht geplant. | ||
Mit der obigen Syntax verhält sich das Skript wie erwartet, wenn Notepad das aktive Fenster ist. Andernfalls jedoch bewirkt Strg-A gar nichts, d.h. die normale Tastenfunktion ist verloren gegangen. Da das in der Regel nicht erwünscht ist, wird stattdessen folgende Methode empfohlen: | Mit der obigen Syntax verhält sich das Skript wie erwartet, wenn Notepad das aktive Fenster ist. Andernfalls jedoch bewirkt Strg-A gar nichts, d.h. die normale Tastenfunktion ist verloren gegangen. Da das in der Regel nicht erwünscht ist, wird stattdessen folgende Methode empfohlen: | ||
Zeile 22: | Zeile 22: | ||
return | return | ||
Ein Vorteil dieser Sytax ist, dass das Skript unter allen Windows-Versionen läuft. Nachteilig ist, dass komplexere Skripte auf diese Weise schnell unübersichtlich werden können. Außerdem ist es relativ aufwändig, Skripte die in der neuen Syntax vorliegen in diese Syntax umzuschreiben. | |||
== Neuer Vorschlag == | |||
Die folgende Methode zum Umschreiben für Windows | Die folgende Methode zum Umschreiben für '''Windows 95/98/ME''' ist -- v.a. bei umfangreichen Skripten -- wesentlich einfacher. Sie wurde allerdings erst vor kurzem beschrieben, so dass z.Z. entsprechend wenige Erfahrungen vorliegen. Durch etwas zusätzlichen Code ''am Anfang des Skripts'' wird die normale Tastenfunktion wieder hergestellt: | ||
#IfWinNotActive, ahk_class Notepad | #IfWinNotActive, ahk_class Notepad | ||
Zeile 34: | Zeile 34: | ||
MsgBox Du hast Strg-A gedrückt während Notepad aktiv ist. | MsgBox Du hast Strg-A gedrückt während Notepad aktiv ist. | ||
return | return | ||
Solche Scripte laufen anscheinend auch unter '''Windows NT/2000/XP'''! | |||
Probleme bei Verwendung dieser Syntax mit AutoHotkey 1.0.44.04 oder neuer (bitte ergänzen!):<br> | Probleme bei Verwendung dieser Syntax mit AutoHotkey 1.0.44.04 oder neuer (bitte ergänzen!):<br> | ||
* Windows 95: noch nicht getestet | * Windows 95: noch nicht getestet | ||
* Windows 98: bisher keine Probleme bekannt | * Windows 98: bisher keine Probleme bekannt | ||
* Windows | * Windows ME: noch nicht getestet | ||
* Windows NT: noch nicht getestet | * Windows NT: noch nicht getestet | ||
* Windows 2K: noch nicht getestet | * Windows 2K: noch nicht getestet | ||
* Windows XP: noch nicht richtig ( | * Windows XP: noch nicht richtig getestet (Gibt's denn hier keine Smiley-Icons?) | ||
Version vom 3. Juni 2006, 11:14 Uhr
Oft will man, dass ein Hotkey nur in einem best. Zusammenhang -- d.h. wenn ein best. Fenster aktiv ist -- seine besondere Wirkung hat. Andernfalls soll die betreffende Taste oder Tastenkombination ihre normale Funktion ausüben.
Windows NT/2000/XP
Die bevorzugte Methode ist #IfWin... (neu seit AHK-Version 1.0.41), weil dadurch der Code übersichtlicher wird als mit der alten Syntax. Beispiel:
#IfWinActive, ahk_class Notepad ^a:: MsgBox Du hast Strg-A gedrückt während Notepad aktiv ist. return
Windows 95/98/ME
Die neue #IfWin...-Methode wird hier leider nicht vollständig unterstützt, und dies ist auch für die Zukunft nicht geplant. Mit der obigen Syntax verhält sich das Skript wie erwartet, wenn Notepad das aktive Fenster ist. Andernfalls jedoch bewirkt Strg-A gar nichts, d.h. die normale Tastenfunktion ist verloren gegangen. Da das in der Regel nicht erwünscht ist, wird stattdessen folgende Methode empfohlen:
$^a:: ; Das $ Präfix vor dem Hotkey erlaubt ihm, "sich selbst zu senden". IfWinActive, ahk_class Notepad { MsgBox Du hast Strg-A gedrückt während Notepad aktiv ist. return } Send ^a return
Ein Vorteil dieser Sytax ist, dass das Skript unter allen Windows-Versionen läuft. Nachteilig ist, dass komplexere Skripte auf diese Weise schnell unübersichtlich werden können. Außerdem ist es relativ aufwändig, Skripte die in der neuen Syntax vorliegen in diese Syntax umzuschreiben.
Neuer Vorschlag
Die folgende Methode zum Umschreiben für Windows 95/98/ME ist -- v.a. bei umfangreichen Skripten -- wesentlich einfacher. Sie wurde allerdings erst vor kurzem beschrieben, so dass z.Z. entsprechend wenige Erfahrungen vorliegen. Durch etwas zusätzlichen Code am Anfang des Skripts wird die normale Tastenfunktion wieder hergestellt:
#IfWinNotActive, ahk_class Notepad $^a:: Send ^a #IfWinActive, ahk_class Notepad ^a:: MsgBox Du hast Strg-A gedrückt während Notepad aktiv ist. return
Solche Scripte laufen anscheinend auch unter Windows NT/2000/XP!
Probleme bei Verwendung dieser Syntax mit AutoHotkey 1.0.44.04 oder neuer (bitte ergänzen!):
- Windows 95: noch nicht getestet
- Windows 98: bisher keine Probleme bekannt
- Windows ME: noch nicht getestet
- Windows NT: noch nicht getestet
- Windows 2K: noch nicht getestet
- Windows XP: noch nicht richtig getestet (Gibt's denn hier keine Smiley-Icons?)
Quellen
Englische AutoHotkey-FAQ
Deutsches Total Commander-Forum
->Zurück zu AutoHotkey