AHK-Skripte unter verschiedenen Windows-Versionen: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
(8 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 7: | Zeile 7: | ||
^a:: | ^a:: | ||
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 | |||
== Windows 95/98/ | == Windows 95/98/ME == | ||
Die neue ''#IfWin...''-Methode wird hier | Die neue ''#IfWin...''-Methode wird hier 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, | 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, kann die alte Syntax verwendet werden: | ||
$^a:: ; Das $ Präfix vor dem Hotkey erlaubt ihm, "sich selbst zu senden". | $^a:: ; Das $ Präfix vor dem Hotkey erlaubt ihm, "sich selbst zu senden". | ||
Zeile 20: | Zeile 20: | ||
} | } | ||
Send ^a | Send ^a | ||
Return | |||
Die alte Syntax funktioniert selbstverständlich auch unter '''Windows NT/2000/XP'''. 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. | |||
== Neue Methode == | |||
Die folgende Methode zum Umschreiben für '''Windows 95/98/ME''' ist wesentlich einfacher. Durch wenig zusätzlichen Code ''am Anfang des Skripts'' wird die normale Tastenfunktion ermöglicht: | |||
$^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'''. | |||
Wenn ein Skript mehr als einen Hotkey und mehr als eine ''#IfWin...''-Anweisung enthält, so müssen unter Windows 95/98/ME '''alle''' Hotkey-Definitionen mit $ Präfix vor der ersten ''#IfWin...''-Anweisung kommen, z.B.: | |||
$^a:: Send ^a | $^a:: Send ^a | ||
$^b:: Send ^b<br> | |||
#IfWinActive, ahk_class Notepad | #IfWinActive, ahk_class Notepad | ||
^a:: | ^a:: | ||
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<br> | |||
#IfWinActive, ahk_class TfPSPad | |||
^b:: | |||
MsgBox Du hast Strg-B gedrückt während PSPad aktiv ist. | |||
Return | |||
'''Quellen'''<br> | |||
[http://www.autohotkey.com/docs/FAQ.htm#HotContext AutoHotkey-FAQ (englisch)]<br> | |||
[http://www.autohotkey.com/forum/post-62630.html#62630 AutoHotkey-Forum (englisch)] | |||
Nebenbemerkung:<br> | |||
Unabhängig von der Syntax ist zu bedenken, dass bestimmte AHK-Funktionen wie z.B. Hotstrings nur unter Windows NT/2000/XP zur Verfügung stehen. | |||
{{Rückverweis|AutoHotkey|AutoHotkey}} | {{Rückverweis|AutoHotkey|AutoHotkey}} |
Aktuelle Version vom 21. Juni 2006, 20:15 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 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, kann die alte Syntax verwendet werden:
$^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
Die alte Syntax funktioniert selbstverständlich auch unter Windows NT/2000/XP. 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.
Neue Methode
Die folgende Methode zum Umschreiben für Windows 95/98/ME ist wesentlich einfacher. Durch wenig zusätzlichen Code am Anfang des Skripts wird die normale Tastenfunktion ermöglicht:
$^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.
Wenn ein Skript mehr als einen Hotkey und mehr als eine #IfWin...-Anweisung enthält, so müssen unter Windows 95/98/ME alle Hotkey-Definitionen mit $ Präfix vor der ersten #IfWin...-Anweisung kommen, z.B.:
$^a:: Send ^a $^b:: Send ^b
#IfWinActive, ahk_class Notepad ^a:: MsgBox Du hast Strg-A gedrückt während Notepad aktiv ist. Return
#IfWinActive, ahk_class TfPSPad ^b:: MsgBox Du hast Strg-B gedrückt während PSPad aktiv ist. Return
Quellen
AutoHotkey-FAQ (englisch)
AutoHotkey-Forum (englisch)
Nebenbemerkung:
Unabhängig von der Syntax ist zu bedenken, dass bestimmte AHK-Funktionen wie z.B. Hotstrings nur unter Windows NT/2000/XP zur Verfügung stehen.
->Zurück zu AutoHotkey