AutoHotkey, Teil 1

AHK als perfektes Windows-Helferlein

| Autor / Redakteur: Mirco Lang / Stephan Augsten

AutoHotkey und Notepad++ verstehen sich sehr gut – nach ein paar Vorkehrungen.
AutoHotkey und Notepad++ verstehen sich sehr gut – nach ein paar Vorkehrungen. (Bild: Lang / AutoHotkey)

Die Skriptsprache AutoHotkey ist vor allem auf die Automation wiederkehrender Aufgaben unter Windows ausgelegt, ermöglicht aber auch komplexe Programme. In einer kleinen Serie zeigen wir Fähigkeiten, Konzepte und Syntax und richten eine optimale Arbeitsumgebung ein.

Für Programmiereinsteiger gibt es kaum eine bessere Wahl als die Arbeit mit AutoHotkey. Für Profis stellt die Skriptsprache eine wunderbare Option dar, Zeit und Arbeit zu sparen, um die Entwicklungsarbeit allgemein zu optimieren.

Im ersten Teil dieser dreiteiligen Serie erfahren Sie zunächst, was AutoHotkey überhaupt kann und warum es ein so spannendes Werkzeug ist. Hinzu kommen die Einrichtung eines optimalen Arbeitsplatzes und ein erstes konkretes „Projektchen“: Ein Programm, das systemweit vollautomatisch beliebige Textkürzel durch Textbausteine ersetzt. Anzahl der dafür benötigten AutoHotkey-Steuerzeichen: genau eines.

In den folgenden Teilen stellen wir Ihnen dann einige spannende Funktionen im Detail vor, bis hin zu einer kompletten, funktionsfähigen GUI. Vorkenntnisse im Programmieren sind dafür nicht nötig. Auch Kosten kommen freilich nicht auf Sie zu, denn AutoHotkey und alle hier eingesetzten Hilfsmittel sind Open Source.

Wieso AutoHotkey?

AutoHotkey gehört zu den wenigen Dingen, die Windows den Linux-Betriebssystemen wirklich Voraus hat. Nun, für normale Endnutzer gibt es freilich einige Gründe, die für Windows sprechen, von der Gewohnheit durch Schule, Studium und Beruf über die Gaming-Fähigkeiten bis hin zur zentralen, einheitlichen Systemsteuerung.

Aber Poweruser, (angehende) Entwickler und viele weitere fortgeschrittene Nutzer bevorzugen aus guten Gründen ihr GNU/Linux- oder Linux-Derivat. Und natürlich ließe sich alles, was AutoHotkey kann, auch unter Linux umsetzen – aber nicht mit nur einem Tool, nicht so einfach, nicht so schnell. Der Vollständigkeit halber: Über IronAHK lassen sich kompilierte Skripte auch unter Linux nutzen. AutoHotkey verweist selbst auf das Projekt, welches aber verwaist scheint.

Wie der Name schon verrät, stellt AutoHotkey zwei Dinge in den Vordergrund: Automation und Hotkeys. Die Sprache beherrscht aber deutlich mehr, beispielsweise Rekursionen, Arrays, Schleifen, If-Abfragen oder dynamische Speicherzuweisung. Mit anderen Worten: AutoHotkey ist Turing-vollständig. Die in C++ geschriebene Anwendung nutzt die Win32 API, so dass beispielsweise sehr einfach grafische Oberflächen mit Standardelementen aus Windows definiert werden können.

Abgeleitet wurde AutoHotkey von AutoIt v2, viele AutoIt-Skripte laufen sogar (mit wenigen Änderungen) mit AutoHotkey, das jedoch mehr Funktionen beinhaltet als AutoIt v2. AutoIt v3 wiederum hat dieses Mehr an Funktionen aufgenommen und weitere Features hinzugefügt. Allgemein wird AutoIt der strukturiertere und besser für größere Anwendungen geeignete Code attestiert – während AutoHotkey einfacher zu nutzen ist, zumindest und insbesondere für Nicht-Programmierer.

Erweitertes Window-Handling

Eine dritte Stärke von AutoHotkey ist die Manipulation von Fenstern. Es ist extrem simpel, geöffnete Fenster zu identifizieren, Eckwerte wie zugehöriges Programm oder schlicht Größe und Position herauszufinden und diese Werte anderweitig zu nutzen oder zu verändern. Für die Fensterverwaltung gibt es mit der freien Software NiftyWindows ein perfektes Beispiel.

NiftyWindows spendiert Windows ein komplettes Fenster-Handling. Fenster können angedockt oder über ein Raster platziert werden (tiling), es gibt plötzlich die von Linux bekannte Funktion des Aufrollens, Fenstertransparenzen lassen sich per Mausrad verändern und vieles mehr. Einige Funktionen findet man heute auch rudimentär nativ in Windows, aber längst nicht alle – und erstes und letztes NiftyWindows-Release ist aus 2005.

Das Programm zeigt noch etwas anderes, nämlich dass sich mit AutoHotkey mehr als nur ein paar kleine Nutzerskripte basteln lassen. Mit 2338 Zeilen Code ist NiftyWindows durchaus ein erwachsenes Projekt, das noch vor Zeiten allgegenwärtiger Breitbandverbindungen große Verbreitung über die Covermount-Medien von IT-Zeitschriften gefunden hat.

Zum Abschluss noch ein Beispiel dafür, dass AutoHotkey mehr als „nur“ Hotkeys und Fenstermanipulation kann: AutoGUI ist eine komplette grafische Entwicklungsumgebung für AutoHotkey – und selbst nichts weiter als ein Haufen AutoHotkey-Skripte.

Systemweite Textbausteine

Chronologisch korrekt müsste nun die Einrichtung einer guten AutoHotkey-Arbeitsumgebung folgen, aber die Neugierde auf Code dürfte gerade größer sein. Also gibt es erstmal einen kurzen Einblick in die Syntax. Die AutoHotkey-Skripte selbst sind schlichte Textdateien mit der Endung AHK. Tipp: Wenn Sie AHK-Dateien über den Windows-Explorer anlegen, fügt AutoHotkey ein paar Zeilen mit Infos und zur Optimierung ein.

Ein ganz einfaches Beispiel, das zum Beispiel in diesem Satz zum Einsatz kam:

::zB::zum Beispiel
::bsp::Beispiel

Sobald auf die Zeichenfolge „zB“ ein Satzzeichen, Leerzeichen oder Enter folgt, wird es durch „zum Beispiel“ ersetzt. Der Vollständigkeit halber: Ein „Zb“ würde zu „Zum Beispiel“ und ein „ZB“ zu „ZUM BEISPIEL“. In der zweiten Zeile folgt dasselbe Spielchen mit „bsp“ und Beispiel.

Bereits mit dieser simplen Syntax lassen sich in vielen Bürojobs monatlich Stunden einsparen, ohne irgendetwas an der eigenen Arbeitsweise zu ändern. Neben Abkürzungen können das natürlich auch persönliche Rechtschreibfehler oder ganze Floskeln sein:

::mfg::Mit freundlichen Grüßen {enter}Mirco Lang

Selbstverständlich lassen sich in den Ersetzungstexten auch Sonderzeichen wie hier das Enter unterbringen. In diesem Fall wird tatsächlich ein Druck der Enter-Taste simuliert. Alternativ lässt sich natürlich auch ein Zeilenumbruch über ein Escape-Zeichen einfügen:

::mfg::Mit freundlichen Grüßen `nMirco Lang

Statt des meist üblichen Backslash verwendet AutoHotkey standardmäßig den Accent Grave für den Escape-Befehl, das „n“ steht dann wie üblich für den Zeilenumbruch.

Zum Weiterdenken: Es müssen aber nicht die großen Textblöcke sein, auch Kleinigkeiten können enorme Wirkung haben. Beispielsweise gibt es einige Entwickler, die statt QWERTY lieber exotische Tastaturlayouts wie Dvorak oder Colemak nutzen. Und da sich Tasten ganz einfach via „x::u“ umbelegen lassen, lässt sich so ein Layout einfach über ein AHK-Skript wie beispielsweise better_dvorak.ahk aktivieren.

AutoHotkey würde aber seinen Namen nicht verdienen, wenn Hotkeys nicht genauso einfach wären, um noch eine letzte Code-Vorschau zu liefern:

XButton1::Hallo Welt
^!+#n::run notepad.exe

In der ersten Zeile wird die Daumentaste an der Maus mit der Textausgabe „Hallo Welt“ belegt, in der zweiten Zeile die Tastenkombination STRG+ALT+SHIFT+WIN+N mit dem Start des Programms Notepad.

Die Arbeitsumgebung

AutoHotkey und Notepad++ verstehen sich sehr gut – nach ein paar Vorkehrungen.
AutoHotkey und Notepad++ verstehen sich sehr gut – nach ein paar Vorkehrungen. (Bild: Lang / AutoHotkey)

Skripte lassen sich natürlich einfach in Notepad, nano oder sonst einem simplen Editor verfassen. Unter Windows ist eines der beliebtesten Entwicklerwerkzeuge aber nicht ohne Grund Notepad++. Da Autovervollständigung und Syntax Highlighting für AutoHotkey standardmäßig nicht dabei sind, sollte man sie nachinstallieren. Und noch eine kleine Vereinfachung: AutoHotkey-Skripte nisten sich unten im Tray ein und können darüber pausiert, beendet und neu geladen werden – aber es geht auch direkt aus Notepad++ heraus.

Downloads für Syntax-Highlighting und Autovervollständigung finden sich im AutoHotkey-Forum. Speichern Sie zunächst die Datei „userDefineLang_AHK.xml“ (über den verwirrenden Link-Namen „Default Theme“) im Hauptverzeichnis von Notepad++. Anschließend können Sie sie in Notepad++ über „Sprache/Eigene Sprache importieren“ importieren (Neustart erforderlich).

Für die Auto Completion speichern Sie die Datei „AutoHotkey.xml“ im AutoHotkey-Verzeichnis „plugins\APIs“. Starten Sie anschließend Notepad++ und aktivieren und konfigurieren Sie die Funktion über „Einstellungen/Optionen/Autovervollständigung“.

Auch das Starten von Skripten aus Notepad++ heraus ist eine Funktion aus dem AutoHotkey-Forum: Speichern Sie das Skript aus dem ZIP-Archiv lokal, wo genau ist egal. Über „Ausführen/Externes Programm ausführen“ können Sie nun das Skript auswählen und in das „Ausführen“-Menü integrieren. Am besten legen Sie sich auch gleich ein Tastenkürzel an, beispielsweise ALT+ENTER. So können Sie dann jegliche Änderungen am Skript sofort, sogar ohne zu speichern, testen.

Vorsicht: Das Skript (beziehungsweise eine temporäre Version davon) landet nach dem Start wie üblich im Tray. Ein erneutes ALT+ENTER würde dieses dann mit den Änderungen neu laden, beenden müssen Sie es aber manuell über das Tray-Icon.

Damit steht die Arbeitsumgebung, die Einfachheit der Syntax sollte neugierig gemacht haben und mit ein wenig Fantasie dürften schon erste eigene Projekte am Horizont funkeln – weiter geht es mit Schleifen, Variablen, Interaktion mit der Außenwelt und ersten grafischen Elementen.

Kommentare werden geladen....

Kommentar zu diesem Artikel

Der Kommentar wird durch einen Redakteur geprüft und in Kürze freigeschaltet.

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Kontaktieren Sie uns über: support.vogel.de/ (ID: 45523863 / IDEs)