Anwendungen automatisch schließen

Da Sie nachts oft Daten sichern, lassen Sie Ihren Rechner 24 Stunden am Tag laufen. Oft vergessen Sie oder ein anderer jedoch, ein Programm zu schließen. Die Folge: Die Sicherung läuft nicht.

Sie können Windows mit Hilfe des Windows Scripting Hosts (WSH) und der Skriptsprache VBScript automatisieren. Besonders gut arbeitet diese Skriptsprache dabei mit den Office-Produkten wie etwa Access zusammen. Allerdings kann VBScript keine bereits existierende Instanz einer Office-Anwendung ansprechen und steuern. Um die beschriebene Anforderung zu erfüllen, müssen Sie dafür sorgen, dass das Skript die Anwendung zuvor auch öffnet.

Das Grundprinzip ist recht einfach: Zuerst ermittelt das Skript die aktuelle Uhrzeit und die Anzahl an Millisekunden, die noch bis zum Zeitpunkt der Sicherung verstreichen. Dann öffnet es Access. Schließlich wartet es, während Sie mit der geöffneten Datenbank arbeiten, um nach der am Anfang ermittelten Anzahl Millisekunden die zuvor erzeugte Instanz von Access zu schließen.

Sie müssen in Zukunft nur noch dafür sorgen, dass Sie und Ihre Kollegen
die betreffende Access-Datenbank ausschließlich mit diesem Skript öffnen. Zu diesem Zweck können Sie ein Symbol auf dem Desktop platzieren.

Das folgende Skript geht davon aus, dass der Taskplaner die Datensicherung um 24 Uhr durchführt und Windows daher Access gegen 23:45 Uhr beenden soll. Das VBScript heißt MANAGE-ACCESS.VBS; Sie können es mit jedem beliebigen Texteditor erzeugen oder von der CD kopieren. CHIP-Code Manage.



Option Explicit
Dim appAccess
Dim szEndTime
Dim szPause

const szTime = ô23:45:00ö
const szDatabase = ôC:\TEST\TEST.MDBö

Wartezeit in Sekunden berechnen
szEndTime = date & ô ô & szTime
szPause = DateDiff(ôsö, now,szEndTime)

if (szPause <= 0) then
szEndTime = (date + 1) & & szTime
szPause = DateDiff(ôsö, now, szEndTime)
end if

In Millisekunden umrechnen
szPause = szPause * 1000

Access und Datenbank oeffnen
Set appAccess = Wscript.CreateObject(ôAccess.Applicationö)
appAccess.OpenCurrentDatabase (szDatabase)
appAccess.Visible = True

Warten
WScript.Sleep szPause

MS Access beenden
appAccess.Quit
Set appAccess = nothing



Und so funktioniert das Skript: Am wichtigsten sind die Konstanten »sz
Time« und »szDatabase«. Der Wert »szTime« gibt den Zeitpunkt an, zu dem Windows Access beendet. Unter »szDatabase« definieren Sie den Pfad zu einer Access-Datenbank, die das Skript öffnet.

Zunächst erzeugen Sie den Zeitstempel »szEndTime« aus dem aktuellen Datum und dem Zeitpunkt »szTime«. Danach berechnen Sie mit »DateDiff« die Differenz zwischen dem aktuellen Zeitpunkt und der durch »szEndTime« angegebenen Zeit in Sekunden. Sollte das Ergebnis negativ sein, erzeugen Sie einen neuen Zeitstempel aus dem Datum des kommenden Tages sowie »szTime« und berechnen die Differenz erneut.

Multiplizieren Sie dann die ermittelte Differenz mit 1.000; so erhalten Sie die Anzahl Millisekunden, die verstreichen muss, bevor Windows Access wieder beenden soll. Schreiben Sie diesen Wert in die Variable »szPause«.

Jetzt erzeugen Sie ein Objekt des Typs »Access.Application«, öffnen die durch »szDatabase« definierte Datenbank und veranlassen das Skript mit der Methode »Sleep« von »WScript« zu warten. Sie übergeben dabei den Wert »szPause«, so dass das Skript rechtzeitig aufwacht, um Access wieder zu beenden.