[[windows:autohotkey]]

Autohotkey

Autohotkey, kurz AHK, ist eine Skriptsprache, mit der man die 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 2000, XP und Vista. Unter Windows 9x/Me funktioniert es mit einigen Einschränkungen (nicht verfügbar: Hotstrings, Maustasten-Hotkeys und bestimmte weitergehende Hotkey-Features).

Quelle

  • mitgelieferte Tools
    • AutoScriptWriter - MakroRecorder für AHK
    • Exe2hk - kompilierte Skripte wieder decompilieren
    • Winspy - gibt Informationen zu geöffneten Fenstern aus.
  • Zusatzprogramme

Direktiven und Befehle innerhalb einer .ahk-Datei:

  • Nach Beendigung des auto-executes-Teiles im Speicher bleiben (siehe Persistent, ab v1.0.16+ bedeutet dies auch, dass nur eine Instanz im Speicher bleibt)
    #Persistent
  • Nur eine Instanz des Programms erlauben:
    #SingleInstance force
  • SetTitleMatchMode setzt das Verhalten beim „Fenstersuchen“
    SetTitleMatchMode 2
  • Dateien einbinden
    #include funktionen.ahk

Wenn beim Druck einer bestimmten Taste etwas ausgeführt werden soll, muss dieser Code mit einer Tastenkombination und zwei Doppelpunkten danach geschrieben werden (TASTENKOMBINATION::):

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 Befehl Send an ein Programm übermittelt werden.

; einzeiliger Kommentar
/*; mehrzeiliger
    Kommentar
*/

:!: 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

Funktionen

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%

}

IfWinExist (Nach Fenstern suchen)

Mittels 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