Der Windows Scripting Host

[Skripte unter Windows] · [VBS-Dateien] · [Erstellen eines Scripts] · [Die wichtigsten Funktionen] · [Run - andere Programme starten]

Skripte unter Windows

In den Zeiten von DOS gab es zahlreiche kleine Installationsprogramme, die mit Batch-Dateien arbeiteten. Unter Windows 3.x gab es den Makrorekorder. Jetzt gibt es eine neue Krücke, um kleine Programme zu schreiben, die vor allem zwei Vorteile bietet:

  • Sie ist kostenlos und kann unter Win95 und NT kostenlos nachgerüstet werden

  • Sie braucht unter Windows 98, 2000 und ME (?) nicht installiert werden.

Der Windows Scripting Host ist unter Windows 98 und Windows 2000 immer aktiv (vermutlich auch unter Windows ME), das Betriebssystem weiß also ohne weiteres zutun, daß eine VBS-Datei ausführbar ist, es kompiliert diese und gibt entweder eine Fehlermeldung zurück oder führt sie manchmal sogar aus ...

VBS-Dateien

Bei Dateien mit der Endung VBS erwartet Windows ein Programm in der Sprache 'Visual Basic Script'. Dabei ist VBS gegenüber VBA ein wenig abgespeckt.

Hauptproblem ist es, für den Scripting Host Dokumentationan aufzutreiben. Eine davon liefert die c't, z.B. in den Artikeln 'Windows im Griff' (Heft 10/99) und 'Zaubern mit Windows' (Heft 21/99) von Dr. Tobias Weltner.
Der Autor liefert jeweils 20 Anwendungsskripts. Eine (ausnahmsweise) kostenlose Dokumentation kann man sich darüber hinaus bei Microsoft herunterladen.

Erstellen eines Scripts

Damit ein Script funktioniert, sind folgende Maßnahmen zu treffen:

  1. NotePad öffnen, vorhandenen Quelltext in eine leere Textdatei kopieren oder in einer leeren Textdate das Script erstellen.

  2. Textdatei mit der Endung .VBS speichern

  3. Datei im Explorer doppelklicken oder in die Autostart-Gruppe kopieren oder auf dem desktop ablegen (um es später durch Doppelklick zu starten).

Die wichtigsten Funktionen

Mit den Bordmitteln des Scripting Hosts kommt man nicht weit. Doch man kann auch andere Objekte heranziehen, z.B. Access oder Excel, um Funktionen auszuführen.

Häufig muß man in Scripts Pfade angeben. Dazu ist es sinnvoll, die Pfade in Anführungszeichen zu setzen, damit es keine Probleme gibt, falls ein Pfad einmal ein Leerzeichen enthält. Der klassische Weg sieht so aus:
  Pfad = Chr(34) + "C:\Eigene Dateien" + Chr(34)
oder
  Pfad = Chr(34) & "C:\Eigene Dateien" & Chr(34)
In Visual Basic kann man aber auch ein doppeltes Anführungszeichen ("") eingeben. In Strings wird dadurch das erste " nicht als Ende des Strings verstanden, sondern als Hinweis, daß hier ein einfaches " im fertigen String erscheinen soll. Angewendet auf das Beispiel heißt das:
  Pfad = """C:\Eigene Dateien"""
Das sieht etwas seltsam aus, verkürzt aber den Code und die Übersichtlichkeit leidet auch nicht mehr als unter dem Code Chr(34).

Run - andere Programme starten

Um ein Programm zu starten, muß man zunächst eine Instanz des Objektes 'WScript.Shell' erzeugen:
  Set ShellWSH = CreateObject("WScript.Shell")
Dann kann man ein Programm so starten:
  ShellWSH.Run """C:\test.exe""", 3, True
Die 3 steht für den Fenstermodus, dabei bedeuten

0

Fenster so versteckt, daß es nicht einmal in der Taskleiste erscheint. Die Anwendung erscheint nur im Taskmanager (Strg+Alt+Entf) und kann auch nur von dort beendet werden, falls sie hängt oder mit einer Meldungsbox auf ein OK des Benutzers wartet.

1

Normales Fenster, mit Fokus

2

Symbol mit Fokus, Anwendung erscheint nur in der Taskleiste

3

Vollbild mit Fokus

4

Normales Fenster, ohne Fokus

6

Symbol ohne Fokus, Anwendung erscheint nur in der Taskleiste

In automatischen Skripts ist vermutlich die 4 am besten geeignet: Der Anwender kann sehen, daß das Skript nicht abgestürzt ist, Tasteneingaben landen nicht im Fenster der Anwendung, weil sie keinen Fokus hat und wenn das Programm mit einer unzufriedenen Meldung anhält, kann der Anwender durch manuellen Eingriff reagieren.

Das 3. Argument des Run-Befehls gibt an, ob das Skript die Ausführung des aufgerufenen Programms abwarten soll (True) oder parallel dazu weitermachen soll (False oder kein Wert).
Wenn man z.B. Scandisk via Skript aufruft, ist klar, daß hier kein anderes Programm arbeiten darf, das Skript muß also mit True zum Anhalten gezwungen werden. Wenn man sich nicht ganz sicher ist, setzt man mit True auf die sichere Karte.