====== Autohotkey ======
[[wpde>Autohotkey]], kurz AHK, ist eine Skriptsprache, mit der man die [[windows:Windows]]-Benutzeroberfläche steuern kann. Mit Hilfe von AutoHotkey kann man sich wiederholende Arbeitsaufgaben unter Windows automatisieren. AutoHotkey ist freie Software und auch für Programmieranfänger leicht zu erlernen. Die zur Programmiersprache mitgelieferte Dokumentation enthält ein Tutorial und zu jedem Befehl komplette Programmbeispiele oder zumindest konkrete Anwendungsfälle.
AutoHotkey ist ein Programm für [[windows:Windows]] 2000, XP und Vista. Unter [[windows:Windows]] 9x/Me funktioniert es mit einigen Einschränkungen (nicht verfügbar: Hotstrings, Maustasten-Hotkeys und bestimmte weitergehende Hotkey-Features).
[[wpde>Autohotkey|Quelle]]
===== Hilfsprogramme =====
* **mitgelieferte Tools**
* AutoScriptWriter - MakroRecorder für AHK
* Exe2hk - kompilierte Skripte wieder decompilieren
* Winspy - gibt Informationen zu geöffneten Fenstern aus.
* **Zusatzprogramme**
* [[http://www.autohotkey.com/forum/topic775.html|SmartGUI Creator]] - hilft beim Entwerfen von grafischen Dialog(box)en.
* [[http://de.autohotkey.com/forum/topic1884.html|Compile_AHK II]] - Alternative Compiler Gui
* [[http://www.heise.de/software/download/autoit_debugger/62782|AutoIt Debugger]]
===== Skripte von anderen =====
* [[http://www.autohotkey.com/wiki/index.php?title=Script_Listing|Script Listing]]
* [[http://www.autohotkey.com/forum/viewtopic.php?t=4056|Useful and growing collection of Total Commander scripts]]
* [[http://www.ghisler.ch/wiki/index.php/AutoHotkey|AutoHotkey addons for Totalcommander]]
===== Syntax =====
Direktiven und Befehle innerhalb einer .ahk-Datei:
* Nach Beendigung des auto-executes-Teiles** im Speicher bleiben** (siehe [[http://www.autohotkey.com/docs/commands/_Persistent.htm|Persistent]], ab v1.0.16+ bedeutet dies auch, dass nur eine Instanz im Speicher bleibt)#Persistent
* Nur **eine Instanz des Programms** erlauben: #SingleInstance force
* [[http://www.autohotkey.com/docs/commands/SetTitleMatchMode.htm|SetTitleMatchMode]] setzt das **Verhalten beim "Fenstersuchen"**SetTitleMatchMode 2
* **Dateien einbinden** #include funktionen.ahk
==== Hotkey definieren ====
Wenn beim Druck einer bestimmten Taste etwas ausgeführt werden soll, muss dieser Code mit einer Tastenkombination und zwei Doppelpunkten danach geschrieben werden (TASTENKOMBINATION::):
[[http://www.autohotkey.com/docs/KeyList.htm|List of Keys, Mouse Buttons, and Joystick Controls]]
Beispiel: Win+x löst Dialogbox mit entsprechendem Text aus:
#x::
msgbox Tasten Win und x gedrückt!
return
^ Stellvertreter ^ spezielle Taste ^
| # | Windows-Taste |
| ^ | STRG (CTRL)-Taste |
| ! | Alt-Taste |
| + | Shift-Taste |
:!: Alternativ können Tastendrücke mit dem [[http://www.autohotkey.com/docs/commands/Send.htm|Befehl Send]] an ein Programm übermittelt werden.
==== Kommentare ====
; einzeiliger Kommentar
/*; mehrzeiliger
Kommentar
*/
==== Variablen ====
:!: [[http://www.autohotkey.com/docs/Functions.htm#Locals|Local and Global Variables]]
* **Zuweisung**:
a = 2 ;String oder Integer
* Definition (Zuweisung mit Typübernahme)
a := 2 ;nur integer Zahl
b := "var1" ;String
b = var1 ;String oder integer
c := "var1"
d := b; d enspricht Variable b (Kopie)
e = %b% ;Var e (String) der Inhalt von b enthält
e := % b%a% ;Expressionmode (erstes % schaltet um): Variable e entspricht Variable b2 in Kopie (für Laufvariablen)
* **Verkettung** c := % b . c ; die Inhalte von Variable b und c werden verkettet
* **interne Variablen**:
* %a_index% FIXME
* ...
==== Sprachelemente ====
=== Funktionen ===
[[http://www.autohotkey.com/docs/Functions.htm|Funktionen]]: Bekommen i. d. R. Werte übergeben und geben ein Ergebnis zurück.
Der Variablen Ergebnis wird das Ergebnis des Funktionsaufrufes von Addition zugewiesen. Addition bekommt 1 und den Inhalt von a (2) übergeben, in der Variable Ergebnis steht somit am Ende 3.
a := 2
Ergebnis := Addition(1, a)
Addition(a,b,c=0) ;c ist optionale Variable (d. h. muss nicht übergeben werden); c:=0 funtioniert hier nicht
{
return a+b+c
}
=== Prozeduren ===
Prozeduren: Wie Funktionen nur ohne Übergabewerte.
Gosub, Halloprozedur
Halloprozedur:
msgbox Hallo Welt
return
=== Schleifen ===
Der gewünschte Code wird x-mal (hier 3) wiederholt.
loop 3
{
msgbox Durchlauf Nr. %a_index%
}
==== Befehle ====
=== IfWinExist (Nach Fenstern suchen) ===
Mittels [[http://www.autohotkey.com/docs/commands/IfWinExist.htm|IfWinExist und IfWinNotExist]] kann nach Fenster gesucht werden. Da der Fenstertitel bei verschiedenen Sprachversionen und geöffneten Dateien anders lautet, ist auch eine Filterung nach anderen Kriterien (Klassen, ...) möglich.
=== Timer ===
Timer lösen nach bestimmten Intervallen Aktionen aus.
Hier wird alle 250 ms die Prozedur "checkActiveWindow" aufgerufen, die nach einem Fenster sucht, dass "Taschenrechner" als Titel hat.
SetTimer, checkActiveWindow, off
SetTimer, checkActiveWindow, 250
checkActiveWindow:
IfWinExist, Taschenrechner
msgbox Taschenrechner gefunden!
return