Glengamoi (Forum) · AspHeute · .NET Heute (RSS-Suche) · AspxFiles (Wiki) · .NET Blogs

Windows Script Components

Geschrieben von: Christoph Wille
Kategorie: Komponenten

This printed page brought to you by AlphaSierraPapa

Eine Neueinführung mit VBScript 5 (eigentlich den ganzen v5 Scriptengines) sind die Windows Script Components (WSC). Diese haben früher unter dem Namen Scriptlets firmiert, haben aber mit dem Release eben diese Namensänderung erfahren - die Funktionalität ist aber die Gleiche geblieben - Komponenten auf Basis einer Scriptsprache. Kein Erlernen von zusätzlichen Kenntnissen ist mehr nötig.

Um WSC's ausführen zu können, reicht es, den Internet Explorer 5 zu installieren (oder nur die Scripting Engines der Version 5). Zusätzlich sollte man den WSC Wizard downloaden und installieren - er ist sehr hilfreich und wird in diesem Artikel zur Erstellung einer WSC verwendet.

Erzeugen einer WSC mit dem Wizard

Da Ihr den WSC Wizard ja schon installiert habt, fangen wir gleich damit an, eine neue Komponente für ASP zu erstellen. Folgende Schritte sind notwendig:

  1. Starten des WSC Wizard; Start Menü - Programme - Microsoft Windows Script - WSC Wizard
  2. Schritt 1 von 6 erscheint (Allgemeine Optionen). Die erste Frage ist der Name der Komponente. Für das Beispiel nennen wir sie HelloWorld. Der Dateiname wird automatisch vorgeschlagen, genauso wie die ProgId. Alle diese Angaben passen uns.
    Schritt 1
  3. Schritt #2 im Wizard erlaubt uns, entweder ein DHTML Behavior oder eine ASP WSC zu erzeugen (letzteres auswählen). Weiters kann man die Scriptsprache wählen, sowie Error checking und Debugging Unterstützung selektieren. Wir nehmen VBScript, sowie Error und Debugging Unterstützung.
    Schritt 2- Characteristics
  4. Eine Komponente hat Eigenschaften und Methoden. In Schritt 3 kann man jetzt die Eigenschaften deklarieren. Geben wir unserer Komponente die Eigenschaft Name, damit wir die Hello World Nachricht mit dem Namen ausgeben können. Dazu klickt man in die Name Spalte, und gibt Name an. Unter Type versteht man ob diese Eigenschaft Nur-Lesen (Read Only), Nur-Setzen (Write Only) oder beides sein soll (Read/Write). In unserem Fall reicht es, wenn wir den Namen setzen können (Write Only).
    Schritt 3 - Eigenschaften definieren
  5. Bei Schritt 4 angelangt, sind jetzt die Methoden an der Reihe. Wir brauchen eigentlich nur eine - SayHello, und weil wir Name as Eigenschaft angelegt haben, braucht sie auch keine Parameter.
    Methoden deklarieren
  6. Da unserer Komponente keine Ereignisse (Events) unterstützen soll, brauchen wir auch keine zu deklarieren. Daher können wir Schritt 5 getrost überspringen.
  7. Der letzte Schritt gibt uns dann noch einen Überblick, was wir uns alles ausgewählt haben. Wenn alles paßt, dann klickt auf Finish.

Der erzeugte Sourcecode

Die WSC Komponente (oder das Skelett davon) ist für uns erzeugt worden. Was steht nun eigentlich in diesem Skelett drinnen? Gute Frage. Hier ist der Source Code:

<?xml version="1.0"?>
<component>

<?component error="true" debug="true"?>

<registration
	description="HelloWorld"
	progid="HelloWorld.WSC"
	version="1.00"
	classid="{1345c972-fdd2-47cf-a410-631568501d75}"
>
</registration>

<public>
	<property name="Name">
		<put/>
	</property>
	<method name="SayHello">
	</method>
</public>

<implements type="ASP" id="ASP"/>

<script language="VBScript">
<![CDATA[

dim Name

function put_Name(newValue)
	Name = newValue
end function

function SayHello()
	SayHello = "Temporary Value"
end function

]]>
</script>

</component>
Überraschung - es ist eine XML Datei! Es sieht zwar auf den ersten Blick etwas erschreckend aus, ist es aber nicht. Die Zeile
<?component error="true" debug="true"?>
ist zum Beispiel der Ausfluß unserer Auswahl Error und Debugging Support. Der <registration> Block beeinhaltet die ProgId, die ClassId, Versionsinfo und eine Beschreibung - so wie jede andere Komponente auch, aber halt schön lesbar.

Weiter geht es mit der Deklaration unserer Eigenschaften und Methoden im <public> Block:

<public>
	<property name="Name">
		<put/>
	</property>
	<method name="SayHello">
	</method>
</public>
Die Name Eigenschaft ist put (Write Only), und die Methode SayHello ist auch einfach deklariert. Interessant und wichtig für ASP Komponenten ist
<implements type="ASP" id="ASP"/>
da mit dieser Zeile die ganzen ASP Objekte (Server, Request, ...) eingebunden werden. Der "Rest" der Datei ist dann der VBScript Sourcecode für unsere Komponente.

Registrierung einer WSC Komponente

Bevor wir jetzt weiterprogrammieren, registrieren wir mal die Komponente. Dazu öffnet Ihr den Explorer und geht in das Verzeichnis, wo der WSC Wizard die Komponente hingespeichert hat (Schritt 1). Bei mir war das d:\. Klickt mit der rechten Maustaste auf die WSC Datei und wählt Register aus dem Kontextmenü. Ihr bekommt folgende Meldung:
Erfolgte Komponentenregistrierung
Dann ist alles paletti. Scheitert Ihr hier, dann sind nicht die korrekten Scripting Engines installiert.

Die ASP Seite

Eine Komponente bringt nur dann was, wenn man Sie auch verwendet. Dazu brauchen wir eine ASP Datei:

<%
Set xObj = Server.CreateObject("HelloWorld.WSC")
xObj.SayHello
%>
Wenn ich die Datei im Browser aufrufe, passiert gar nichts - kein Wunder, wenn man sich die SayHello Funktion in der WSC Komponente ansieht.

Die WSC Komponente fertigstellen

Gut - dann bauen wir die SayHello Funktion mal um. Und zwar so:

function SayHello()
	Response.Write "Hello World " & Name
end function
Speichert die Datei und ruft die ASP Seite erneut auf - et volia, Hello World steht schon da! Aber kein Name, was mich wiederrum nicht wundert, denn die ASP Seite hat noch einen Schönheitsfehler (die Name Eigenschaft ist nicht gesetzt worden):
<%
Set xObj = Server.CreateObject("HelloWorld.WSC")
xObj.Name = "Christoph"
xObj.SayHello
%>
Jetzt funktioniert alles so, wie es soll.
Jetzt funktioniert es

Das Resümee

Aufmerksamen Lesern ist bereits aufgefallen, daß ich den Web Server nicht stoppen mußte, damit die Änderung am Code der Komponente übernommen wurde - keine andere Komponenteentwicklungsumgebung außer WSC erlaubt diesen Luxus. Weiters kann ich meine ASP Scripts beinahe 1:1 übernehmen, auch ein gewaltiger Vorteil. Und das bischen XML schreckt einen nicht, weil man hat ja den WSC Wizard.

Erfolgreiches Programmieren mit WSC's!

This printed page brought to you by AlphaSierraPapa

Verwandte Artikel

Dateiupload mit ASP und WSC
http:/www.aspheute.com/artikel/20010202.htm

Links zu anderen Sites

Scripting Engines
http://msdn.microsoft.com/scripting/
WSC Wizard
http://msdn.microsoft.com/scripting/scriptlets/wz10en.exe

 

©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.