• Deutsch
  • Polski

INGENIEURBÜRO PROCHOTTA

Dariusz Prochotta

Dipl.-Ing. (PL)

staatlich anerkannter und vom OLG Hamm ermächtigter Übersetzer für Polnisch

Mitglied im Bundesverband der Dolmetscher und Übersetzer e.V. (BDÜ)

Autohotkey – Modul 04

05.10.2017 Autohotkey Keine Kommentare

Wiederholung:

Das haben wir bereits gelernt:

– Tastaturtasten austauschen: x::y

– Eine Zeichenkette durch eine andere ersetzen: ::x::y

– Ein einfaches Skript konstruieren:

   ^Numpad1::

   ….

   ….

   return

– Physikalische Tasten simulieren

– Eine Loop-Schleife konstruieren

   Loop 10 {

  ….

  ….

   }

– Ein Skript unterbrechen

   #z::ExitApp

   return

– Einer Variable einen Wert zuweisen (Operatoren „=“ und „:=“)

– Einfache Rechenoperationen durchführen

– Einen Wert in das Programm eingeben (mithilfe von „InputBox“)

– Sich einen Wert anzeigen lassen (mithilfe von „MsgBox“)

In unserem nächsten Programm geht es um Fenster, genauer gesagt, um das Umschalten zwischen mehreren Applikationen.

Wenn ich einen Text im Programm Word übersetze, habe ich normalerweise auf einem Bildschirm meine Vorlage (den Ausgangstext) z.B. im PDF-Format, und auf dem zweiten Bildschirm das Programm Word mit meiner Übersetzung. Die aktive Anwendung ist Word, aber ab und zu muss ich auch das PDF-Dokument aktivieren, um auf die nächste Seite zu scrollen. Unser Skript soll also ein PDF-Dokument aktivieren, eine Seite nach unten scrollen und dann wieder Word aktivieren. Der große Nutzen für uns: Wir können flüssig weiterschreiben, ohne ständig nach der Maus greifen zu müssen.

Die hierfür hilfreichen Befehle finden sich unter https://ahkde.github.io/docs/Tutorial.htm in der Kategorie „Fenster“. In meinem vorigen Beitrag habe ich aber versprochen, etwas Brauchbares ohne zu viel Theorie zu liefern. Ich verzichte also auf eine detaillierte Erläuterung dieser Befehle, auch deshalb, weil diese Anweisungen sehr komplex sind. Besprochen wird also nur das, was für unser Beispiel relevant ist.

Ausgangspunkt: Ein Word-Dokument mit der Übersetzung und ein PDF-Dokument mit dem Ausgangstext sind beide geöffnet.

^Numpad5::

MsgBox, 4096,, „Aktivieren Sie das Dokument mit dem Quelltext und bestätigen Sie mit OK“

ID_Nummer_1 = WinActive(„A“)

MsgBox, 4096,, „Aktivieren Sie das Dokument mit dem Zieltext und bestätigen Sie mit OK“

ID_Nummer_2 = WinActive(„A“)

return

In der ersten und der dritten Zeile habe ich die etwas längere Variante der Anweisung 

MsgBox verwendet. Ähnlich wie „MsgBox, Text“ generiert auch diese Anweisung ein Fenster mit der entsprechenden Aufforderung. Der Nutzer soll mit der Maus das PDF-Dokument aktivieren, dann bestätigt er mit dem OK-Button, und die nächste Programmzeile wird ausgeführt. Der Parameter „4096“ sorgt dafür, dass dieses Fenster immer im Vordergrund bleibt, also nicht durch ein anderes Fenster, z.B. das PDF-Dokument, verdeckt werden kann.

In der nächsten Zeile sehen wir die Anweisung:

ID_Nummer_1 = WinActive(„A“)

Dieser Befehl erstellt die Variable „ID_Nummer_1“ und weist ihr den Ausgabewert der Funktion WinActive(„A“) zu. Diese Funktion führt (in dieser Form) zur Ausgabe der Identifikationsnummer des aktiven Fensters zurück. Das Programm speichert diesen Wert als Variable ID_Nummer_1.

Danach verwenden wir wiederholt die Anweisung „MsgBox“ und geben dem Nutzer Gelegenheit, das Word-Programm zu aktivieren. Die letzte Zeile sorgt dafür, dass die Identifikationsnummer des Word-Dokuments als Variable ID_Nummer_2  gespeichert wird. 

Nach diesen Vorbereitungen erstellen wir nun das nächste Skript:

^Numpad6::

WinActivate, ahk_id %ID_Nummer_2%

sleep, 200

SendInput {PgDn}

sleep, 200

WinActivate, ahk_id %ID_Nummer_1%

sleep, 200

return

Die Anweisung WinActivate (bitte nicht verwechseln mit „WinActiv“) aktiviert das entsprechende Dokument.

Der Parameter „ahk_id“ ist hier eine der zahlreichen Optionen für „WinActivate“. Nach diesem Parameter erwartet das Programm eine Identifikationsnummer, und diese wurde zuvor als Variable „ID_Nummer_1“ bzw. „ID_Nummer_2“ gespeichert. Somit weiß das Programm, was zu tun ist. Die Anweisung „SendInput {PgDn}“ erledigt das Scrollen.

In einem kleinen Film von mir sehen wir, dass dieses Skript sehr gut funktioniert. Immer wenn wir das PDF-Dokument scrollen wollen, müssen wir nur „Ctrl+Numpad6“ drücken.

Eine wichtige Frage ist noch zu klären, nämlich, wie lange Werte in den Variablen gespeichert bleiben? Die Antwort lautet: So lange, wie das entsprechende Skript aktiv ist (das grüne Icon mit dem Buchstaben „H“ ist dann auf der Bildschirmleiste zu sehen). Wird dieses Skript deaktiviert, muss in diesem Fall nach einer erneuten Aktivierung des Skripts der Befehl „Ctrl+Numpad5“ wiederholt werden, um die Variablen „ID_Nummer_1“ und „ID_Nummer_2“ mit Werten zu versehen.

Ein weiterer Punkt: Die Identifikationsnummer einer Anwendung (hier ein Word-Dokument und ein PDF-Dokument) wird nicht ein für alle Mal eindeutig zugewiesen. Wird ein Dokument geschlossen und später erneut geöffnet, bekommt sie (die Anwendung) eine neue Identifikationsnummer. In diesem Fall muss ich also zuerst „Ctrl+Numpad5“ drücken, um die Variablen „ID_Nummer_1“ und „ID_Nummer_2“ zu aktualisieren.

Das nächste Skript schreiben wir einfach ab. Es geht um ein Tool, das ähnlich wie das sog. Intellisense arbeitet. Als Resultat bekommt der Nutzer während des Schreibens einen Vorschlag aus einer in einer txt-Datei gespeicherten Liste.

Schauen wir uns die folgende Seite an:

https://autohotkey.com/board/topic/636-intellisense-like-autoreplacement-with-multiple-suggestions/

In diesem Autohotkey-Forum lässt sich verfolgen, wie ein Programm von mehreren Programmierern entwickelt wurde. Nehmen wir uns als Beispiel ein halbwegs fertiges Skript (Beitrag Nr. 16 vom Nutzer „Maniac“). Hier werden 2 Versionen präsentiert (2 press version und 1 press version). Das Programm steht zur kostenlosen Nutzung zur Verfügung. Kopieren wir uns die erste der beiden Versionen und fügen den Code in eine neue AHK-Datei ein. Der Code beginnt mit der Zeile

Intellitype: typing aid

und endet mit:

Return New

}

(Bitte nur den ersten Teil kopieren, die beiden Abschnitte sind sehr ähnlich)

Dieses Programm ist sehr komplex und wir müssen es nicht unbedingt analysieren. Wichtig für uns ist nur eine Zeile, ziemlich am Anfang:

Loop, Read, %A_ScriptDir%\Wordlist.txt

Anhand dieser Zeile wissen wir, dass eine Liste mit Wörtern Inhalt der Datei „Wordlist.txt“ ist und dass diese Datei sich in demselben Verzeichnis wie das AHK-Skript selbst befinden soll (Parameter „A_ScriptDir“).

Die Datei „Wordlist.txt“ müssen wir selber erstellen – zunächst, später versuchen wir das zu ändern.

Hier ein Beispiel aus meinem letzten Übersetzungsprojekt:

Ausführungsdokumentation

Beanspruchungskategorie

Bedingung der Stabilität

Beschriftung der Abbildung:

Beschriftung der Tabelle:

Dimensionierung der Sparre

Einhüllende für die Biegemomente

Einhüllende für die Druckkräfte

Element des oberen Rings

Element des unteren Rings

Grenzzustand der Tragfähigkeit

Grenzzustand der Gebrauchstauglichkeit

Seilverbindungselemente

Sicherheitsbeiwerte

Zuverlässigkeitsklasse

Zuverlässigkeitsniveau

Überdachungskonstruktion

Sobald das neue Skript aktiv ist, sehen wir, während wir schreiben, Vorschläge aus der Liste „Wordlist.txt“.

In den nächsten Beiträgen versuche ich, die Funktionalitäten dieses Skripts mit sehr einfachen Mitteln zu erweitern, sodass es für uns Übersetzer noch nützlicher wird.

Wenn Euch dieser Beitrag gefällt, könnt Ihr ihn gerne mit dem Button „Gefällt mir“ kommentieren.

Tags: