Anredeformen mit Autohotkey

Autohotkey ist sehr flexibel und kann nicht nur Texte ersetzen oder Tastenkombinationen ausführen. Es eignet sich auch gut zur Abfrage von veriablen Informationen. Ich nutze beispielsweise gern individuelle Anredeformen in meinen E-Mails.

Also solche Dinge wie “Sehr geehrter Herr Sowieso” oder “Sehr geehrte Frau Sowieso” oder auch die allgemeine Anrede. Schreibe ich sgdh, macht Autohotkey “Sehr geehrte Damen und Herren,” draus, gefolgt von zwei Zeilenumbrüchen. Wenn ich aber die Anrede für einen Mann oder eine Frau benötige, schreibe ich sgf für die weibliche und sgh für die männliche Anrede. Und weil ich jedesmal den Namen der jeweiligen Person brauche, löse ich das Ganze mit einem Eingabeformular.

Als Beispiel mal der Code für die männliche Anrede:

:*:sgh::
InputBox, UserInput, Sehr geehrter Herr...,,, 250, 100,
Send, Sehr geehrter Herr%A_Space%
Send, %UserInput%
Send, ,{Return 2}
return

Ich erkläre die Befehle jetzt einfach mal Zeile für Zeile.

:*:sgh::

Diese Zeile löst die folgende Aktion aus. Der Stern (*) zwischen den ersten beiden Doppelpunkten sorgt dafür, dass die Funktion sofort ausgeführt und kein abschließendes [Enter] benötigt wird.

Die Zeile:

InputBox, UserInput, Sehr geehrter Herr...,,, 250, 100,

erzeugt eine Eingabeaufforderung, die so aussieht:

%UserInput% ist die Variable, die mit dem gefüllt wird, was in das Eingabefeld getippt wird. Die beiden Zahlen am Ende bestimmen die Größe des Eingabedialogs. In diesem Fall ist er 250px breit und 100px hoch.

Send, Sehr geehrter Herr%A_Space%

In dieser Zeile wird der Text zusammengesetzt. Zunächst wird “Sehr geehrter Herr” geschrieben, gefolgt von einem Leerzeichen. Damit Autohotkey das Leerzeichen als solches erkennt, muss es explizit als %A_Space% hingeschrieben werden.

Send, %UserInput%

Jetzt kommt der Name, den ich in das Eingabefeld getippt habe. Der steht ja in der %UserInput%-Variable und wird einfach hingeschrieben.

Send, ,{Return 2}

Und jetzt noch ein Komma, gefolgt von zwei Zeilenumbrüchen

return

Zum Schluss wird der Block ordnungsgemäß beendet.

Natürlich könnte man die drei Zeilen, die den Text zusammensetzen auch in eine Zeile schreiben. Das sähe dann so aus:

Send, Sehr geehrter Herr %UserInput%,{Return 2}

Und weil alles in einer Zeile steht, braucht man auch das explizite Leerzeichen nicht.

Genauso funktioniert das auch mit der Anrede bei Frauen, nämlich:

Send, Sehr geehrte Frau %UserInput%,{Return 2}

Der Schnipsel für die allgemeine Anrede ist wesentlich einfacher, nämlich so:

:*:sgdh::Sehr geehrte Damen und Herren,{Enter 2}

Ich hoffe, ich konnte ein wenig Licht ins Dunkel bringen und wünsche viel Spaß beim Ausprobieren und erweitern. :)

4 Gedanken zu „Anredeformen mit Autohotkey“

  1. Feine Sache!
    In der Datei hat sich übrigens ein kleiner Rechtschreibfehler bzw. copy paste Fehler eingeschlichen. Der Auslöser sgh hat sich auch bei der Variante für die Dame eingenistet. ;-)

    Antworten
  2. Hallo Michael,
    Das sind ja tolle Tipps und Tools. Kurz und allgemeinverständlich geschrieben! Danke dafür.
    Das AutoHotkey Programm ist ja genial, leider für den Laien nur schwierig zu erlernen. Da sind vorgefertigte Skripts äußerst hilfreich.
    Habe häufig zwischen 2 Monitoren zu wechseln (schrittweise Erklärung von Prozeduren auf dem einen und die Ausführung der Prozedur auf dem anderen Monitor). Habe daher soeben Ihr Skript “Fenster von einem Monitor auf den anderen schieben” kopiert und in den Editor eingefügt. Funktionierte auf Anhieb. Danke!!
    Sicher haben Sie auch Hinweise für die Erstellung von Makros mit Autohotkey verfasst, z.B. um in WIN 7 einen Wiederherstellungspunkt zu erzeugen. Habe diese Hinweise aber nicht gefunden. Oder gibt es einen guten anderen Makrorekorder? Zu 5 im Netz auffindbaren Makrorekordern gibt es aber viele Warnhinweise. Würde mich über hilfreiche Links freuen.
    Mit freundlichen Grüßen
    Elmar

    Antworten

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.