Office Manager Entwickler-Support

Anwendungen mit Tastaturmakros steuern

Wenn Programmierschnittstellen fehlen

Moderne Windows-Anwendungen beinhalten Programmierschnittstellen, die einen Datenaustausch und die Steuerung durch andere Anwendungsprogramme ermöglichen. Beispiele sind DDE, COM, OLE und spezielle APIs. Im Office Manager werden diese Schnittstellen intensiv verwendet, um Dokumente zu verwalten, Textinhalte auszulesen, Scanner zu steuern und verschiedene Texterkennungsprogramme zu verwenden.

In einigen Sonderfällen stehen die Programmierschnittstellen aber nicht zur Verfügung. Sei es, weil diese Techniken zur Entwicklungszeit einer alten Software noch nicht definiert waren, bei der Entwicklung nicht auf die Integration in Gesamtkonzepte geachtet wurde oder Schnittstellen absichtlich nicht freigegeben werden. Derartige Programme lassen sich nur durch den Anwender und nicht durch andere Software bedienen.

Der Office Manager verspricht als allgemein verwendbare Datenverwaltungs-Lösung aber zumindest, dass beliebige Dokumente in ihren verknüpften Anwendungen geöffnet werden können. Wenn dies mit normalen Mitteln nicht funktioniert, dann bleibt als letzte Möglichkeit die Emulation der Benutzereingaben mit Tastatur- und/oder Mausmakros.

Funktionen für die Benutzer-Emulation

Die Windows-API beinhaltet Funktionen zum Senden von Eingabe-Botschaften an ein Programmfenster. Verwenden Sie diese in JScript und VBScript:

  • SendInput emuliert Tastaturereignisse, Mausbewegungen und -Klicks, sowie das Auslösen von Schaltflächen.
  • keybd_event erzeugt eine WM_KEYUP- oder WM_KEYDOWN-Botschaft. Diese Funktion ist aber mittlerweile als veraltet deklariert.

Die Office Manager-API bietet eigene Funktionen, die intern auf die Windows-API zugreifen. Verwenden Sie diese für Skripte der Office Manager-Makrosprache:

  • CreateKey: Schreibt einen Tastendruck in den Tastaturpuffer.
  • CreateKeyStr: Schreibt mehrere Zeichen in den Tastaturpuffer.
  • SendKey: Sendet einen Tastendruck als Windows-Botschaft.
  • SendKeyStr: Sendet mehrere Zeichen als Tastaturbotschaft.

Vorgehensweise

Bedienen Sie bitte zuerst das zu steuernde Programm über die Kurztasten und Menübefehle. Notieren Sie sich genau die Schritte, die Sie als Anwender ausführen. Tastatur-Eingaben sind den Mausereignissen vorzuziehen, weil die Mausposition immer auch von der jeweiligen Fensterposition abhängt.

Für die Benutzeremulation wird das zu steuernde Anwendungsprogramm vom Makro ausgeführt und es wird gewartet, bis das Programm für Benutzereingaben bereit ist (WaitForInputIdle). Wenn für die gewünschte Funktion eine Kurztaste definiert ist, dann wird diese bevorzugt verwendet. Anderenfalls sendet das Makro die Taste F10 zum Öffnen des Menüs und anschließend die Befehlszugriffstaste (das im Menü unterstrichene Zeichen) oder mehrere Cursortasten, um den Befehl zu markieren, mit anschließendem Enter.

Beispielskript: OCR-Texterkennung von Adobe Acrobat steuern

Die Standard- und Professional-Versionen von Adobe Acrobat beinhalten eine OCR-Texterkennungssoftware für gescannte PDF-Dokumente. Leider ist in der Acrobat-API keine Funktion für die programmierbare Verwendung der OCR enthalten. Mit folgendem Tastaturmakro kann der Office Manager aber das Dokument im Acrobat öffnen, die Menübefehle aufrufen und die Dialogfenster bestätigen. Für die produktive Dokumentenarchivierung ist das Makro nur bedingt geeignet, es ist aber ein gutes Beispiel für die Benutzeremulation in Anwendungen.

Makro acrobat-ocr-tastatur.omac für deutsche Acrobat-Version 8.0:

# 1. Das Makro nur für Dokumentdateien mit der Endung *.pdf zulassen
{RaiseError:Diese Funktion ist nur für PDF-Dokumente zulässig.,{CurrDocFileName:FileExt}<>pdf}

# 2. Das Dokument in Acrobat öffnen und warten, bis die Anwendung für Benutzereingaben bereit ist
{ShellExecute:{CurrApplExe},{CurrDocFileName},1,WaitForInputIdle}

# 3. Optional: sicherstellen, dass die Anwendung im Vordergrund ist
{Wait:400}
{WinAPI:BringWindowToTop}

# 4. Das Hauptmenü mit der Taste F10 öffnen
{CreateKey:121,Virtual}

# 5. Menübefehl öffnen:
#    u für Dokument, c für Text mit OCR erkennen, t für Starten, l für Alle Seiten
{CreateKey:117}
{CreateKey:99}
{CreateKey:116}
{CreateKey:108}
# Enter-Taste zur Bestätigung des Dialogfensters
{CreateKey:13}

# Die OCR-Erkennung wird jetzt ausgeführt.
# Mit CreateKey kann aber bereits in den Tastaturpuffer geschrieben werden,
# Acrobat arbeitet den Puffer ab, sobald es bereit ist.

# 6. Sicherstellen, dass Acrobat im Vordergrund ist
{WinAPI:BringWindowToTop}
{WinAPI:SetForegroundWindow}

# 7. Menü öffnen und d für Datei, e für Beenden senden
{CreateKey:121,Virtual}
{CreateKey:100}
{CreateKey:101}

# 8. Im Acrobat öffnet sich eine MessageBox mit der Rückfrage, ob die geänderte Datei
#    gespeichert werden soll. Der Schalter "Ja" ist als Vorgabe markiert.
#    Entertaste zum Bestätigen der Rückfrage senden
{CreateKey:13}

# 9. warten, bis Acrobat beendet ist
{WaitForApplication:{CurrApplExe},0,0}