Mittwoch, 30. Dezember 2009

VBScript: Programme mit sendkeys steuern

Manchmal muss ein Programm automatisiert werden welches selbst keine Skript-Mechanismen hat. Eine Möglichkeit ist es, dies mit VBScript zu realisieren. Wir erstellen uns ein Objekt mit dem wir im Folgenden arbeiten werden.

Wir starten das benötigte Programm. Die Exe-Datei muss sich im bekannten Windows-Pfad befinden, ansonsten muß der absolute Progrmma-Pfad angegeben werden. Damit das Programm genug Zeit zum Starten hat, warten wir nach dem Start ein paar Sekunden bevor wir fortfahren:

set ergo = CreateObject("Wscript.shell")
ergo.run("notepad.exe")
wscript.sleep(3000)
Mit der Methode sendkeys können wir einen oder mehrere Tasten an Windows senden. Dieses "Tippen" geht an das jeweils aktive Fenster von Windows. Neben normalen Zeichen können auch Steuerzeichen "{STEUERZEICHEN}" gesendet werden.

set ergo = CreateObject("Wscript.shell")
ergo.sendkeys("1{TAB}2{ENTER}3") 
Es kann jederzeit passieren, dass das Programm nicht mehr aktiv ist oder nicht mehr den Focus hat. Die Tasten werden dann an das jeweils aktive Fenster geschickt - unerwünschte Nebenwirkungen nicht ausgeschlossen. Selbst wenn wir ein genau definiertes Objekt verwenden um das Programm zu starten und die Tasten zu senden - die Tasten werden immer an das jeweils aktive Fenster von Windows gesendet.

Über unser Objekt können wir aber versuchen das Fenster des benötigten Programms zu aktivieren. Dazu geben wir etwas an, was eindeutig in der jeweiligen Titelzeile des Programms steht. Nur wenn das funktioniert hat, senden wir tatsächlich die Tasten.

titelzeile = "Editor"

'------------------------------------ das Programm starten
set ergo = CreateObject("Wscript.shell")
ergo.run("notepad.exe")

'------------------------------------ etwas tippen
wscript.sleep(3000)
if ergo.AppActivate(titelzeile) Then ergo.sendkeys("1{ENTER}2") 
wscript.sleep(3000)
if ergo.AppActivate(titelzeile) Then ergo.sendkeys("3{ENTER}")
wscript.sleep(3000)
if ergo.AppActivate(titelzeile) Then ergo.sendkeys("{TAB}Fertig")
Sicher ist sicher.

Keine Kommentare:

Kommentar veröffentlichen