Profi-Tipp: Internet Explorer für Eingabedialog von VBS-Programmen nutzen

Tipp 4 in CHIP 4/2004 beschreibt, wie Sie den Internet Explorer als Ausgabefenster für WSH-Programme einsetzen. Nun möchten Sie auch die begrenzten Möglichkeiten des Eingabebefehls »InputBox()« durch einen komfortablen Eingabedialog erweitern.

Eingabedialog entwerfen

Definieren Sie zunächst Inhalt und Funktion des Dialogs. Das komplette Listing sowie die Beispieldatei INPUTNAME.HTML finden Sie auf der Heft-CD unter CHIP-Code Praxis05:

<HTML>

<HEAD>
<TITLE>Eingabe Name</TITLE>
</HEAD>
<BODY BGCOLOR="yellow" TEXT="black">
<CENTER>
<FORM name="Eingabe">
<P>
<B>Geben Sie bitte Ihren Namen ein:</B>
<INPUT name="Name" type=text size="30">
</P>
<P>
<INPUT name="OK" type=button value="& Uuml;bernehmen"
onclick="uebernehmen()">
</P>
</FORM>
</CENTER>
</BODY>
</HTML>
Das Formular »Eingabe« zwischen den Schlüsselwörtern »FORM« und »/FORM« erfragt den Namen. Dafür definieren Sie mit dem ersten »INPUT«-Befehl ein Eingabefeld vom Typ »text«, das Sie später über seine Bezeichnung »Name« ansprechen. Der »INPUT«-Befehl vom Typ »button« erzeugt eine Schaltfläche zum Aufrufen der Funktion »uebernehmen()«.

Auswerte-Skript einfügen

Damit Ihr VBS-Programm die Eingabe auswerten kann, erweitern Sie das HTML-Formular zwischen »HEAD« und »/HEAD« um den Abschnitt:
<SCRIPT language="VBScript">

Dim intEingabeStatus
Function uebernehmen()
intEingabeStatus = 1
End Function
</SCRIPT>
Wenn der Anwender auf »Übernehmen« klickt, wird »intEingabeStatus« der Wert »1« zugewiesen.

HTML-Formular einsetzen

Jetzt können Sie das HTML-Formular in das folgende Skript integrieren – es erzeugt mit den editierten Daten ein personalisiertes Begrüßungsfenster.
INPUTWITHIE.VBS integrieren:

Option Explicit
Dim objIE
Dim szWorkingDirectory
Dim szName
szWorkingDirectory = WScript.ScriptFullName
szWorkingDirectory = Left(szWorkingDirectory, InstrRev(szWorkingDirectory,"\"))
Set objIE = CreateObject("InternetExplorer.Application")
objIE.navigate("about:blank")
objIE.width = 400
objIE.height = 200
objIE.Toolbar = false
objIE.Statusbar = false
objIE.navigate szWorkingDirectory& "InputName.Html"
objIE.visible = true
Do While (objIE.Busy)
WScript.Sleep 50
Loop
Do While (objIE.document.script. script.intEingabeStatus<>1)
WScript.Sleep 50
Loop
szName = objIE.document.Eingabe.Name.Value
objIE.visible = false
objIE.Quit
Set objIE = Nothing
Msgbox("Hallo " & szName & "!")
Das Objekt »objIE« vom Typ »InternetExplorer.Application« repräsentiert den Internet Explorer und wird mit »Set objIE = CreateObject("InternetExplorer.Application")« erzeugt. Die Eigenschaften »width«, »height«, »Toolbar« und »Statusbar« sorgen für das Layout. Bevor »objIE.visible = true« den Browser öffnet, lädt »objIE.navigate« das HTML-Formular für die Eingabe. Dabei wird der Dateiname inklusive Pfadangabe als Parameter übergeben. Wenn Sie Formular und VBS-Programm im gleichen Ordner speichern, können Sie die Pfadangabe automatisieren: Schreiben Sie »WScript.ScriptFullName« – es enthält Namen und Pfad des laufenden Skriptes – in die Variable »szWorkingDirectory« und entfernen Sie dann mit »Left(szWorkingDirectory, InstrRev (szWorkingDirectory,"\"))« den Namen der Skriptdatei aus dem Text-String.In einer ersten Warteschleife prüft das Skript den Wert »objIE.Busy«, damit das Programm erst weiterarbeitet, wenn das Formular im Browser geladen ist. Eine zweite Schleife wartet, bis der Wert »objIE.document.script. intEingabeStatus« mit »1« belegt ist, also der Anwender im Formular auf »Übernehmen« geklickt hat. Dann überträgt die Anweisung »szName = objIE.document.Eingabe.Name.Value« den Wert aus dem Formularfeld »Name« in die Variable »szName«. Nun wird der IE mit der »Quit«-Methode beendet und das Objekt mit »Set objIE = Nothing« freigegeben. Abschließend erfolgt die persönliche Begrüßung in einer Message-Box.