emClient mit AI←▼→Betriebskosten meines E-Autos

Textbausteine mit Autohotkey für Einsteiger

autohotkey,desktop,windows

Erstellt: 31.08.2018 Aktualisiert: 07.07.2024 Lesedauer 7 - 8 Min.

„Autohotkey“ war schon mehrfach Thema eines Artikels hier. Das war meist sehr speziell. Aus konkretem Anlass habe ich eine Anleitung für Einsteiger geschrieben, wie damit schlaue Textbausteine erzeugt und verwaltet werden können.

Die erste Anleitung entstand für AutoHotkey 1.x. Das ist veraltet. Eine Nachfrage führte zur grundlegenden Überarbeitung für AutoHotkey 2.x

Diese Anleitung setzt Windows als Betriebssystem voraus.

Weil ich selbst weiß, wie doof man sich gelegentlich fühlt, wenn Kenner ein geniales Produkt beschreiben, ist das der Versuch einer „Einsteiger-Anleitung“.

zur Verbesserung ist willkommen
, denn mittlerweile ist mir einges vertraut1, weshalb hier Details fehlen könnten, die womöglich1 „Showstopper“ sind.

Das Ziel

Anlegen eine „Autohotkey-Entwicklungsumgebung“ und das Erstellen von Textbausteinen damit.

Dafür werden die erforderlichen Programme vorgestellt (inkl. Links zum Download), die beschriebenen Beispiele können als Übungsdatei heruntergeladen werden.

Voraussetzungen

Ein „Reintext“-Editor

Grundsätzlich ist jeder Editor geeignet, der mit Text-Dateien im UTF-8-Format umgehen kann. Im AutoHotkey-Forum werden einige Editoren vorgestellt.

Die Luxus-Variante

Visual Studio mit AutoHotkey Plus Plus. Das ist eine ausgewachsene Entwicklungsumgebung, die reichlich Platz auf dem Rechner belegt. Nur für AutoHotkey-Skripte ist das womöglich etwas überdimensioniert.

Das Arbeitstier

Notepad++. Ein Universal-Texteditor, der sich mit einigen Ergänzungen vorzüglich für die Bearbeitung von AutoHotkey-Skripten eignet.

Word, Open/FreeOffice oder vergleichbare Programme sind ungeeignet.

Damit er direkt zugeordnet werden kann, sollte der geplante Editor zuerst installiert werden.

AutoHotKey 2.x

Dafür wird der AutoHotkey-Installer für die aktuelleste, stabile Version angeboten. Der sollte immer direkt von der AutoHotkey-Seite bezogen werden: Die Angebote von Online-Verlagen etc. sind häufig veraltet und können mit fragwürdigen Zusätzen versehen sein.

Hilfe-Dateien

AutoHotkey installiert eine englische Hilfedatei. Auf der Downloadseite werden auch „Help files in other languages“ angeboten. Die kompilierte Variante davon kann „Offline“ verwendet werden, doch damit gab es – bei mir – regelmäßig Probleme mit der Verwendung.

Die deutschsprachige Onlinehilfe ist eine vollwertige und aktuellere Alternative dafür, erfordert aber eine Online-Verbindung.

Installation

Editor

Visual Studio erfordert Geduld bei der Installation, dafür ist sie selbsterklärend. Sobald alles installiert ist, kann das Zusatzpaket durch anklicken ergänzt werden (das geht flott). Gelegentlich ist mir unklar, was die Entwicklungsumgebung mir sagen oder mich fragen will, doch funktional ist das sehr ausgefeilt.

Notepad++ erfordert mehr Eigenleistung, dafür ist der Platzbedarf signifikant kleiner, das Programm weniger offensiv, was die „Rundumbetreuung“ betrifft:

  • Notepad++ Setup starten und „durchklicken“ (an die deutsche Oberfläche denken → „Localization“)
  • Den bevorzugten Syntax-Highligher herunterladen (per Rechtsklick „Default Theme“ ). Notepad++ starten → Menüpunkt „Sprache“ → „User Defined Language“ → „Verzeichnis mit benutzerdefinierter Sprache öffnen…“ und dort die XML-Datei hinein kopieren.
  • Den Syntax-Vervollständigung herunter laden (Rechtsklick) und in das autoCompletion-Verzeichnis2 von Notepad++ kopieren.
  • Optional kann über Plugins → Plugin-Verwaltung „RunMe“ nützlich sein, mit dem ein Skript ohne speichern ausprobiert werden kann (Plugin-Infos lesen!).
Autohotkey

Das Installationspaket „durchklicken“. Die Vorgeschlagenen Einstellungen gewährleisten eine zuverlässige Nutzbarkeit.

  • Screenshot des AHK-Dash nach der Installation 🔍
    Dieser Dialog kann mit dem Skript im Programmverzeichnis
    „C:\Programme\AutoHotkey\UX\ui-dash.ahk“
    jederzeit wieder geöffnet werden.
    Nach der Installation unter Editor settings den gewünschten Standard-Editor festlegen ( → ①).
  • In den „Launch settings“ festlegen, dass die aktuellste, installierte Version als Standard verwendet wird (→ ②).

    Es könnten zwar verschiedene Versionen parallel betrieben werden, doch das möglicherweise erforderliche Anpassen älterer Skripte an die eingerichtete Version (1.x → 2.x) ist zweckmäßiger: Das vermeidet Kuddelmuddel.

Ein Skript-Verzeichnis

Für die Skripte ist ein eigenständiges, uneingeschränkt beschreib- und lesbares Verzeichnis für alle eigenen und ggf. herunter geladenen Skripte zweckmäßig.

Dort können auch weitere „Helferlein“ (die keine Installation erfordern) abgelegt werden, damit sie bequem mit AutoHotkey verwendbar sind.

Sollen die Skripte „stressfrei portabel“ sein (PC ↔ Laptop) ist ein Verzeichnis zweckmäßig, dessen Pfade auf allen Systemen identisch ist (z.B. C:\Tools\AHK).

Einrichten

Das war es eigentlich schon: Per Doppelklick kann eine „ahk“-Datei gestartet werden, unten Rechts in der Taskbar erscheint das AutoHotkey-Icon, das per Rechtsklick ein Kontext-Menü anbietet.

Es können mehrere Skripte parallel gestartet werden, jedes erzeugt einen eigenen „Knopf“ auf der Taskbar. Ein Klick auf „open“ verrät, für welches Skript der jeweile Knopf zuständig ist.

Natürlich geht es noch eleganter — darauf komme ich zurück.

Der erste Befehl

Damit das Ändern und anlegen von Textbausteinen möglichst bequem geht, ist ein Tastenbefehl nützlich. Weil sich das ebenfalls mit AutoHotkey erledigen lässt, wird das der erste Befehl in der „Textbaustein-Datei“. Dafür wird eine neue Datei mit der Endung ».ahk« angelegt. Der Name selbst ist beliebig.

Die Tastenkombination STRG + WIN + 0 soll das aktuelle Skript öffnen. Diese Tastenfolge wird sehr wahrscheinlich von sonst keinem anderen Programm verwendet. Damit das gleiche Skript nur einmal geladen wird (ein erneuter Doppelklick das laufende also ersetzt), wird noch ein entsprechender Befehl allem voran gestellt:

; Nur eine Instanz dieser Skriptdatei zulassen
#SingleInstance Force
 
; STRG WIN 0 → Das aktuelle Skript in Skript-Editor öffnen
^#0::Edit

Es ist zweckmäßig, sich mit einem Kommentar (alle Zeilen, die mit ; anfangen) zu notieren, was der Befehl macht.

Die Datei mit dem obigen Inhalt wird gespeichert und per Doppelklick gestartet. Es erscheint das grüne „H“-Icon unten rechts. Ansonsten passiert — nichts. Editor schließen, STRG + WIN + 0 drücken, ändert das: im Editor öffnet sich das gerade gestartete Skript.

Bitte beachten: Die 0 links über dem P ist für AutoHotkey eine andere als die 0 des Ziffernblocks.

Ziffernblock-Nummern können verwendet werden, doch auf kompakten Laptop kann das den Befehl unerreichbar machen.

Wenn alles glatt lief ist das Skript im Editor geöffnet. Es wird Zeit für …

Textbausteine

In einer Skriptdatei können (theoretisch) beliebig viele Befehle enthalten sein. Organisatorisch zweckmäßig ist die Aufteilung von „Funktionsgruppen“ in einzelne Dateien, die gemeinsam verwendet werden (Erklärung weiter unten). Im Rahmen dieses Tutorials wird alles in eine Datei gepackt, so wie …

Der Klassiker: »mfg« → Mit freundlichen Grüßen

:*:mfg::Mit freundlichen Grüßen{Enter}

Innerhalb der Skript-Datei können Leerzeilen ebenfalls strukturieren. Der obigen Befehl wird einfach eingefügt, die Datei gespeichert und → „Rechtsklick H-Icon“ → „Reload“ ausgeführt. Ist alles korrekt wird aus »mfg« unverzüglich »Mit freundlichen Grüßen« inklusive Zeilenvorschub. AutoHotkey löscht dafür vorher noch das eingegebene Kürzel.

Neben {Enter} können alle anderen Tasten und Tastenkombinationen mit dieser Notation angesprochen werden. Eine Übersicht dazu liefert die (Online-)Hilfe.

Für „Textbausteine“ lautet die allgemeine Schreibweise

:*::Kürzel::Ersatztext

oder – für umfangreiere Aktionen:

:*:Kürzel::
{
  Codeblock
}

Die automatische Ersetzung erfolgt nur, wenn das Kürzel an einem Zeilenanfang, nach einem Leerzeichen oder Tab eingegeben wird. Die Auflösung des Kürzels innerhalb eines Wortes (beim Tippen) wird damit unterbunden.

Soll ein Kürzel „immer, egal wo“ expandiert werden, wird ein ? vor den * gesetzt. Das ist z.B. für Icons zweckmäßig, die direkt an das Ende eines Wortes gesetzt werden sollen:

:?*:..rofl::🤣

Die zwei Punkte vorweg verhindern, dass „rofl“ in einem Wort (z.B. in „Karofläche“) expandiert wird. Mit dem Punktekniff lässt sich das Icon problemlos dahinter platzieren: „Karofläche🤣“.

Textbausteinen eine „Einleitungssequenz“ voranstellen, die im üblichen Schreibgebrauch keine Verwendung hat, verhindert versehentlicher Textsalat.

In einem Textbaustein kann zusätzlich zur Ausgabe von Text der Eingabecursor gesteuert werden:

; Mit „Zwischenstopp' für Texteingabe, weiter bei Eingabe von ,
:*:sg::
{
    sendInput "+{Home}Sehr geehrte"
    ;InputHook(tmp,V,{Enter})
    i:=InputHook("V",",")
    i.Start()
    i.Wait()
    sendInput "{Enter}{Enter}"
}

Dieses Skript löscht die aktuelle Zeile, startet die Anrede und wartet auf ein Komma. Eingaben dazwischen werden direkt ausgegeben, nach einem Komma noch zwei Vorschübe angehängt.

Alternativ können mit ein Dialog Werte abgefragt werden:

; Anrede mit Abfrage-Dialog
:*:-bg::
{  
eingabe := InputBox("ggf. „r' ergänzen","Anrede und Namen eingeben", ," Damen und Herren")
  SendInput "+{home}Sehr geehrte" . eingabe.value .  ",{Enter}{Enter}"   
}

Testbausteine lassen sich sogar variabel gestalten. Über die Zwischenablage können unterschiedliche Formate erzeugt werden, die beim Einfügen von der jeweiligen Anwendung passend verwendet werden:

; Mit Formular für eine Anrede, die im „Reintext' und im „formatierten Text' einen Platzhalter vor der Ausgabe ersetzt
 ; Benötigt die WinClip.Api!
:*:--fobst::
{
   Unformatiert := "Sehr geehrte%a%,`r`rheute eingetroffen: Äpfel aus Spanien`rAb sofort, solange Vorrat reicht.`rWir freuen uns auf Ihren Besuch!`r`rMit freundlichen Grüßen`r`rObsthandung Frisch"
   Formatiert := "<h­3>Sehr geehrte%a%,</h3><p><u>heute eingetroffen</u>: <b>Äpfel aus Spanien</b><br/>Ab sofort, solange Vorrat reicht.</p><p><i>Wir freuen uns auf Ihren Besuch!</i></p><p><br/>Obsthandlung Frisch</p>"
 
   Anrede := " Damen und Herren"  
   eingabe := InputBox("","Anrede und Namen eingeben", ,Anrede)
   if eingabe.result = "OK" 
      {
         if Anrede != eingabe.value 
         {
            Anrede := eingabe.value
            Anrede := StrReplace(Anrede, "Herr", "r Herr")
            Anrede := StrReplace(Anrede, "Frau", " Frau")  
         }
         Unformatiert := StrReplace(Unformatiert, "%a%", Anrede) 
         Formatiert := StrReplace(Formatiert, "%a%", Anrede)   
 
         ClipSaved := ClipboardAll()
         Clip.Clear()
         Clip.SetText(Unformatiert)
         Clip.SetHTML(Formatiert)
         Clip.Paste
         A_Clipboard := ClipSaved
 
         ClipSaved := ""
         Formatiert := ""
         Unformatiert := ""
      }
 
 
   Anrede := ""
   Eingabe := ""
}

Für diese Lösung sind zwei externe Bibliotheken erforderlich, die den Zugriff auf die verschiedenen Formate der Zwischenablage ermöglichen. Damit kann Text mit Formatierungsmerkmalen (HTML-kodiert) in Programmen eingefügt werden, die damit etwas anfangen können. Sie werden ins „Skriptverzeichnis“ kopiert und mit #include für das eigene Skript zugänglich gemacht:

; WinClipAPI.ahk muss vor WinClip.ahk eingefügt werden!
; Download: https://github.com/TheArkive/WinClip_ahk2
#Include WinClipAPI.ahk
#Include WinClip.ahk

Bei umfangreicheren Textbausteinen ist der Umweg über die Zwischenablage verlässlicher und schneller. Statt einzelner Buchstaben via sendInput wird der gesamte Block in einem Zug ausgegeben.

Autostart

Für eine komfortable Verwendung – insbesondere für die Textbausteine – kann ein Skript mit dem Systemstart aufgerufen werden:

Dieses „Autostart-Skript“ kann einige Grundeinstellungen vornehmen, die das Verwenden von Skripten vereinfacht. Bei mir sieht das Skript so aus:

; Mit „shell:startup' den Autostart-Ordner öffnen
; und einen Link zum Script hineinlegen
 
; Capslock deaktivieren
SetCapsLockState "AlwaysOff"
 
; Nur eine Instanz von AutoHotkey zulassen
#SingleInstance Force
 
; Arbeitsverzeichnis festlegen → Startordner des Skripts
SetWorkingDir A_InitialWorkingDir
 
; Zugriff auf Windows-Funktionen.
; Die Dateien müssen ins Skript-Verzeichnis. 
; Reihenfolge beachten! Download:
; https://github.com/TheArkive/WinClip_ahk2/
#Include WinClipAPI.ahk
#Include WinClip.ahk
 
; Das ist „mein' Skript für Textbausteine, etc.
#Include nosi.ahk

Weitere Skripte des Skript-Verzeichnisses können in eigenen Skripten ohne Pfadangabe mit »#include« eingefügt werden.

Andere Skripte lassen sich davon unabhängig problemlos per Doppelklick starten und verwenden, diese bekommen dann ein „eigenes“ Icon.

Kopien

Die Übertragung dieser Autohotkey-Installation ist denkbar einfach: Das gesamte Verzeichnis wird 1:1 auf den anderen Rechner kopiert. Lediglich die Verknüpfung für den Autostart bzs. Programmstart muss passend zur neuen Umgebung neu erzeugt werden. Eine „Sicherung“ des aktuellen Standes in einer ZIP- oder 7z-Datei ist nützlich, wenn z.B. ein Update von Teilen unerwartete Seiteneffekte hervorruft.

Das Ergebnis

Wie eingangs versprochen, gibt es die Beispiele als fertige Datei zum Herunterladen, eingepackt in eine ZIP-Datei. Sie kann beliebig umbenannt und als Basis für die eigenen Ideen verwendet werden.

⤓ nosi-autohotkey-demo.zip ⤓ Download mit Rechtsklick
ZIP-Archiv vom 08.07.2024, 14:55 Uhr, Größe: 1.22 KB

Zu guter Letzt

Die Hilfe von AutoHotkey ist gleichzeitig ein Tutorial. Weil AutoHotkey viel mehr als nur „Textbausteine einfügen“ kann, lohnt es sich eine intensivere Auseinandersetzung damit. So lassen sich probemlos Befehle erstellen, die das aktuelle Datum, die Kalenderwoche, ein Termin in 14 Tagen ausgeben lassen, oder Formulare automatisiert befüllt werden.

Abschließend nochmals meine Bitte um Feedback: Je nach Interesse können weitere Tipps für AutoHotkey entstehen.

Dieses Tutorial war hilfreich?

💡 Via PayPal könnten Sie mir dafür einen Kaffee spendieren!

In diesem Artikel wird viel Information verdichtet. Das spart Lesenden hoffentlich Zeit, sowie den Kauf irgend welcher Zeitschriften, die häufig sehr viel oberflächlicher recherchiert sind. Eine Anerkennung motiviert zu weiteren ausführlichen Artikeln.

1Dennoch bin ich kein „Crack“ – die Tummeln sich im Forum von AutoHotKey.

232-Bit: C:\Programme ⟨x86⟩\autoCompletion 
64-Bit: C:\Programme\autoCompletion 
Zumin Hineinkopieren sind Administratoren-Rechte erforderlich, die (typischerweise) auf Nachfrage vom System gewährt werden.