Die ActiveX-Komponente WSHExtend (WinExtend.ocx) enthält das Objekt WinExt, über welches Sie aus dem Windows Scripting Host verschiedene Methoden (Funktionen) nutzen können. Nachfolgend finden Sie eine kurze Übersicht über die verfügbaren Methoden und Eigenschaften des Objektmodells.
Das Objekt läßt sich in VBScript oder in JScript mit der folgenden Anweisung aufrufen:
Dim objAdr obj = WScript.CreateObject("WSHExtend.WinExt")
Anschließend können Sie über die Objektvariable objAdr auf die Methoden und Eigenschaften zugreifen.
Diese Methode funktioniert nur in VBScript und prüft, ob ein Schlüssel in der Registrierung existiert. Die Methode besitzt folgende Syntax:
obj.WSHKeyExist(Root, key ) = bstatus
Der Parameter Root dient zur der Codes für die Root-Keys. Diese müssen in VBScript folgendermaßen definiert werden:
Const HKEY_CLASSES_ROOT = &H80000000 Const HKEY_CURRENT_USER = &H80000001 Const HKEY_LOCAL_MACHINE = &H80000002 Const HKEY_USERS = &H80000003 Const HKEY_PERFORMANCE_DATA = &H80000004 Const HKEY_CURRENT_CONFIG = &H80000005 Const HKEY_DYN_DATA = &H80000006
Im Parameter key ist der zu prüfende Schlüssel/Wert als Zeichenketten zu übergeben. Als Ergebnis liefert die Methode den Wert true (Eintrag existiert) oder false (Eintrag nicht gefunden) zurück. Im Buch finden Sie Beispiele für den Einsatz der Methode.
Diese Methode funktioniert in VBScript und in JScript. Sie prüft, ob ein Schlüssel in der Registrierung existiert. Die Methode besitzt folgende Syntax:
obj.WSHKeyExist1(Root, key ) = bstatus
Der Parameter Root dient zur der Codes für die Root-Keys in Form einer Zeichenkette. Die Methode unterstützt die Zeichenketten: "HKCR", "HKCU", "HKLM" und "HKU".
Im Parameter key ist der zu prüfende Schlüssel/Wert als Zeichenketten zu übergeben. Als Ergebnis liefert die Methode den Wert true (Eintrag existiert) oder false (Eintrag nicht gefunden) zurück. Im Buch finden Sie Beispiele für den Einsatz der Methode.
Die Methode liefert die aktuelle Zeit zurück und wurde lediglich zu Testzwecken implementiert:
obj.WSHGetTime() = time
Die Methode liefert das aktuelle Datum zurück und wurde lediglich zu Testzwecken implementiert:
obj.WSHGetDate() = time
Die Methode implementiert die InputBox-Funktion aus VBScript für JScript und VBScript. Es gilt folgende Syntax:
obj.WSHInputBox(Prompt, title, Default) = result
Als Parameter sind Zeichenketten zu übergeben. Prompt enthält die Zeichenkette, die im Eingabedialog anzuzeigen ist. In title geben Sie den Titeltext für das Dialogfeld an. Der Parameter Default ist als Variant definiert und legt den Vorgabewert im Eingabefeld fest. Die Methode gibt die Parameter an die VB-InputBox-Funktion weiter und liefert die Benutzereingabe zurück. Nachfolgend finden Sie ein Beispiel für den Einsatz:
Dim objAdr objAdr = WScript.CreateObject("WSHExtend.WinExt") WScript.Echo objAdr.WSHInputBox("Zahl eingeben", "WSH-Beispiel",6)
Die Methode implementiert eine SendKeys-Funktion, die Tastatureingaben simuliert und an das aktuelle Fenster sendet. Es gilt folgende Syntax:
obj.WSHSendKeys(keys, Wait)
Im ersten Parameter ist die Zeichenkette mit dem zu sendenden Befehl zu übergeben.Wait enthält den Wert true, wenn die Methode auf das Bearbeiten der zu sendenden Zeichenkette warten soll. Mit false wird nicht gewaret. Nachfolgend finden Sie ein Beispiel für den Einsatz:
Dim objAdr objAdr = WScript.CreateObject("WSHExtend.WinExt") objAdr.WSHSendKeys "ABC",true
Im Buch findet sich eine detaillierte Erläuterung zu den zulässigen Befehlen.
Die Methode erlaubt ein Skript für eine bestimmte Zeit zu suspendieren (ohne dass dies CPU-Zeit kostet). Es gilt folgende Syntax:
obj.WSHWait(Wait)
Als Parameter ist die Wartezeit (als Long-Variant) in Millisekunden zu übergeben. Nachfolgend finden Sie ein Beispiel für den Einsatz:
Dim objAdr objAdr = WScript.CreateObject("WSHExtend.WinExt") objAdr.WSHWait (1000) ' Wartet 1 Sekunde
Die Methode erlaubt eine Anwendung erneut in den Vordergrund zu holen. Es gilt folgende Syntax:
obj.WSHAppActivate(title)
Als Parameter ist der Name bzw. die ProzeßID (wird von der Shell-Methode geliefert) z übergeben. Nachfolgend finden Sie ein Beispiel für den Einsatz:
Dim objAdr, procID objAdr = WScript.CreateObject("WSHExtend.WinExt") procID = WSHShell("Calc.exe", 1) ' Starte Rechner WSHAppActivate(procID) ' hole Rechner in Vordergrund
Im Buch findet sich weitere Beispiele.
Die Methode erlaubt eine Anwendung zu starten. Im Gegensatz zur Run-Methode liefert die Methode eine Prozeß-ID zurück, die bei der WSHAPPActivate-Methode benötigt wird. Es gilt folgende Syntax:
obj.WSHShell(path,style)
Im Parameter path ist der Pfad und der Name der zu startenden Anwendung zu übergeben. Der Parameter style legt den Fensterstil fest. Die Konstante für die Stile sind folgendermaßen festgelegt:
vbHide 0 Hide Window
vbNormalFocus 1 Window get focus.
vbMinimizedFocus 2 Window minimized and with focus.
vbMaximizedFocus 3 Window maximized and with focus.
vbNormalNoFocus 4 Restore Window, don't set focus.
vbMinimizedNoFocus 6 Window minimized, don't set focus.
Nachfolgend finden Sie ein Beispiel für den Einsatz:
Dim objAdr, procID objAdr = WScript.CreateObject("WSHExtend.WinExt") procID = WSHShell("Calc.exe", 1) ' Starte Rechner WSHAppActivate(procID) ' hole Rechner in Vordergrund
Im Buch findet sich weitere Beispiele.
Die Methode gibt eine akustische Meldung aus. Es gilt folgende Syntax:
obj.WSHShell(mode)
Im Parameter Mode ist der Modus für die Meldung zu übergeben. Die Konstante für den Mode sind folgendermaßen festgelegt:
0 = PC-Lautsprechere
1 = MB_ICONASTERISK
2 = MB_ICONEXCLAMATION
3 = MB_ICONHAND
4 = MB_ICONQUESTION
5 = MB_OK
Die folgende Squenz zeigt die Anwendung.
Dim objAdr, procID objAdr = WScript.CreateObject("WSHExtend.WinExt") WSHBeep (0)
Es wird eine Meldung auf dem PC-Lautsprecher ausgegeben. Beispiele für den Einsatz der Methode finden Sie im Buch.
Die Methode liefert das Handle zum angegebenen Fenster. Es gilt folgende Syntax:
obj.WSHFindWindow(WinName) = hWnd
Im Parameter WinName ist der Fenstertitel als Zeichenkette zu übergeben. Ist der zurückgelieferte Wert = 0, wurde das Fenster nicht gefunden. Andernfalls läßt sich der Wert in anderen Methoden verwenden. Beispiele für den Einsatz der Methode finden Sie im Buch.
Die Methode erlaubt den Fenstertitel blinkend hervorzuheben. Es gilt folgende Syntax:
WSHFlashWindow(hWnd, flag) = bstatus
Im Parameter hWnd ist das Fensterhandle (siehe WSHFindWindow-Methode) zu übergeben. Der Wert flag gibt an, ob das Fenster hervorzugeben (flag=true) oder normal darzustellen (flag=false) ist. Die Methode liefert den Wert des Flags vor dem Aufruf zurück. Beispiele für den Einsatz der Methode finden Sie im Buch.
Die Methode erlaubt ein Fenster zu verschieben oder in der Größe zu verändern. Es gilt folgende Syntax:
obj.WSHMoveWindow(hwnd, x, y, b, h) = bstatus
Im Parameter hWnd ist das Fensterhandle (siehe WSHFindWindow-Methode) zu übergeben. Die Parameter x und y geben die linke obere Position des Fensters an. In b, h wird die Breite und die Höhe des Fensters spezifiziert. Die Methode liefert einen Status mit dem Wert boolean zurück, der angibt, ob der Aufruf geklappt hat. Beispiele für den Einsatz der Methode finden Sie im Buch.
Die Methode holt ein Fensters in den Vordergrund. Es gilt folgende Syntax:
WSHSetForegroundWindow(hwnd) = bstatus
Im Parameter hWnd ist das Fensterhandle (siehe WSHFindWindow-Methode) zu übergeben. Die Methode liefert einen Status mit dem Wert boolean zurück, der angibt, ob der Aufruf geklappt hat. Beispiele für den Einsatz der Methode finden Sie im Buch.
Erlaubt Windows per Skript zu beenden, neu zu starten oder die Abmeldung des Benutzers. Es gilt folgende Syntax:
obj.WSHExitWindows(code) = bstatus
Im Parameter code ist das Fensterhandle (siehe WSHFindWindow-Methode) zu übergeben (siehe Buch). Die Methode liefert einen Status mit dem Wert boolean zurück, der angibt, ob der Aufruf geklappt hat. Beispiele für den Einsatz der Methode finden Sie im Buch.
Erlaubt die Soundausgabe per Skript. Es gilt folgende Syntax:
WSHPlaySound(com, flag) = bstatus
Im Parameter com ist der auszuführende Befehl als String ("C:\Tada.Wav") zu übergeben. Flag gibt an, ob der Sound synchron (0) oder asynchron (1) auszugeben ist. Die Methode liefert einen Status mit dem Wert boolean zurück, der angibt, ob der Aufruf geklappt hat. Beispiele für den Einsatz der Methode finden Sie im Buch.
Erlaubt die Soundausgabe per Skript. (Eigentlich sollten sich auch Videodateien ausgeben lassen, es wird aber nur der Sound wiedergeben). Es gilt folgende Syntax:
obj.WSHMciExecute(com) = bstatus
Im Parameter com ist der auszuführende Befehl ("Play C:\Tada.wav") zu übergeben. Die Methode liefert einen Status mit dem Wert boolean zurück, der angibt, ob der Aufruf geklappt hat. Beispiele für den Einsatz der Methode finden Sie im Buch.
Zeigt ein Dialogfeld zur Dateiauswahl an. Es gilt folgende Syntax:
WSHFileDialog(dr1) = bstatus
Im Parameter dr1 läßt sich ein Laufwerk ("C:\") angeben, welches im Dialogfeld voreingestellt wird. Die Methode liefert einen Status mit dem Wert boolean zurück, der angibt, ob der Benutzer eine Datei gewählt hat. Über die Eigenschaften DriveName, FolderName und FileName können Sie die Auswahl abfragen. Beispiele für den Einsatz der Methode finden Sie im Buch.
Zeigt ein Dialogfeld mit Informationen zur WSHExtend-Komponente an. Es gilt folgende Syntax:
obj.WSHAbout
Funktioniert wie WSHAbout.
Um die entsprechenden WSH-Beispiele (die die Komponenten WSHExtend voraussetzen) auszuführen, muß das ActiveX-Modul registriert sein. Sie finden die beiden Bat-Dateien Register.bat und Unregister.bat, die genau das Modul in der Registrierung eintragen und wieder entfernen. Die Bat-Programme setzen auf dem Programm Regsvr32.exe auf, welches unter Windows 98 vorhanden sein sollte. Sofern Sie also beim Ausführen der WSH-Beispiele eine Fehlermeldung erhalten, dass das WSHExtend-Objekt fehlt, müssen Sie das ActiveX-Modul registrieren.
Die ActiveX-Komponente liegt im Quellcode bei und kann mit der auf der Begleit-CD-ROM enthaltenen VB5CCE bearbeitet und modifiziert werden.
Hinweis: Die Komponente und die Beispiele werden auf der Basis AS-IS mitgeliefert. Eine Unterstützung beim Einsatz sowie eine Haftung für die Folgen des Einsatzes sind ausgeschlossen.
Viel Spaß
(c) Günter Born
http://ourworld.compuserve.com/homepages/Guenter_Born