Windows Scripting Host

Che m...... e'

E` il nuovo giocattolo della Microsoft che sostituisce il vecchio meccanismo dei batch files. Il marchingegno  e` indipendente  dal linguaggio. La Microsoft support VBScript e JScript. Esistono moduli prodotti da terze parti per utilizzare ad es. Perl o Python.

Una caratteristica molto interessante e` che e` possibile utilizzare o realizzare componenti COM che esportino interfacce di tipo Automation (quelle facili da usare).

Come si fa a lanciare uno script

Mediante i comandi CSCRIPT o WSCRIPT. CSCRIPT esegue il file da console, WSCRIPT in Windows.

Le estensioni VBS e JS sono registrate, per cui da windows explorer e` possibile lanciare uno script mediante doppio click o accedere ad un menu contestuale mediante il tasto destro del mouse.

Per scrivere semplici messaggi di output in VBScript e` necessario usare il metodo echo dell’oggetto wscript. Ad es:

 

wscript.echo “ello uord”

Windows Script Component

Serve per realizzare “al volo” componenti COM  utilizzando un linguaggio di scripting.

Mediante un wizard e` possibile creare un file con estensione “.wsc” contenente un sorgente XML che con dei tag appositi descrive le proprieta` e i metodi dell’oggetto.

Con un linguaggio di scripting a scelta si possono poi implementare i metodi.

Esistono delle estensioni per creare componenti da utilizzare all’interno di pagine DHTML o ASP.

Dove lo trovo

Il software si puo` scaricare liberamente da M$OFT

http://msdn.microsoft.com/scripting

 

Installare i seguenti pacchetti:

 

windows script 5.1 en

windows script component wizard 5.1

windows script documentation

Come si usa

Mediante il wizard si fornisce il nome del componente e la directory in cui generarlo. Il wizard proporra` automaticamente il nome del file con l’implementazione e il Program ID con cui ci si riferira’ all’oggetto.

 

 

La seconda pagina del wizard chiede il linuguaggio di scripting da utilizzare, se si desidera il supporto speciale per DHTML o ASP e opzionalmente il check sugli errori e la modalita` di debug.

 

 

La terza pagina permette di specificare le proprieta`

 

 

La quarta pagina permette di specificare i metodi

 

 

La quinta pagina permette di specificare gli eventi che l’oggetto puo` scatenare. (questa parte non l’ho ancora esaminata)

 

 

A questo punto viene proposta la pagina per generare il componente.

 

Il componente generato e` il seguente:

 

<?xml version="1.0"?>

<component>

 

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

 

<registration

     description="Esempio"

     progid="Esempio.WSC"

     version="1.00"

     classid="{63adc260-bd47-11d3-a1ab-006097aa17c4}"

>

</registration>

 

<public>

     <property name="proprieta1">

          <get/>

          <put/>

     </property>

     <method name="metodo1">

          <PARAMETER name="parametro1"/>

          <PARAMETER name="parametro2"/>

     </method>

</public>

 

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

 

<script language="VBScript">

<![CDATA[

 

dim proprieta1

proprieta1 = "default1"

 

function get_proprieta1()

     get_proprieta1 = proprieta1

end function

 

function put_proprieta1(newValue)

     proprieta1 = newValue

end function

 

function metodo1(parametro1, parametro2)

     metodo1 = "Temporary Value"

end function

 

]]>

</script>

 

</component>

 

 

Facendo doppio click su Esempio.wsc il file viene aperto con notepad. E` sufficiente modificare il codice per implementare i metodi.

 

Il menu contestuale di Esempio.wsc comprende le voci Register, Unregister e Generate Type Library. Per utilizzare il componente e` necessario registrarlo.

 

 

Esempio di componete utilizzato in Internet Explorer per accedere a un DB mediante ADO:

 

ElencoMail.html:

<html>

<head>

<title>prova wsh</title>

</head>

<body>

<script language=vbscript>

set oggetto = CreateObject("ElencoMail.wsc")

oggetto.PrelevaElenco(document)

set oggetto = Nothing

</script>

</html>

ElencoMail.wsc:

<?xml version="1.0"?>

<component>

 

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

 

<registration

     description="ElencoMail"

     progid="ElencoMail.WSC"

     version="1.00"

     classid="{d16eb720-bd3d-11d3-a1ab-006097aa17c4}"

>

</registration>

 

<public>

     <method name="PrelevaElenco">

          <PARAMETER name="document"/>

     </method>

</public>

 

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

 

<script language="VBScript">

<![CDATA[

 

function PrelevaElenco(document)

     Set db = CreateObject("ADODB.Connection")

     db.open "db_mail", "python", "python"

     Set rs = CreateObject("ADODB.Recordset")

     rs.ActiveConnection = db

     rs.open "select * from messaggi"

     document.write("<table border=1><tr>")

     with rs

          for i = 0 to .fields.count - 1

              document.write("<td>" & .fields(i).name & "</td>")

          next

          document.write("</tr>")

          do until rs.eof   

              document.write("<tr>")

              for i = 0 to .fields.count - 1

                   document.write("<td>" & .fields(i).value & "</td>")

              next

              document.write("</tr>")

              rs.movenext

          loop

          document.write("</table>")

     end with

     rs.close

     db.close

     set rs = nothing

     set db = nothing

end function

 

]]>

 

</component>


  • SET