![]() |
||
![]() |
Anwendungen automatisch schlie▀enDa 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. 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. |
![]() |