В предыдущих версиях его нужно устанавливать отдельно. Последнюю версию WSH можно получить на сайте Microsoft по адресу http://msdn.microsoft.com/scripting. Также можно произвести обновление WSH чтобы воспользоваться новыми возможностями, если у вас старая версия.
Изначально в операционной системе DOS можно было создавать командные файлы (.bat), которые являлись простейшими скриптами. Но даже используя усовершенствованный интерпретатор cmd.exe в Windows XP невозможно избавиться от значительных ограничений, используя командные файлы трудно работать, не считая многих других ограничений, с реестром Windows и COM объектами. WSH позволяет значительно большее. С помощью WSH можно выполнять в операционной системе сценарии, написанные на произвольных языках программирования, для этого должны быть установлены специальные модули - называемые Scripting Engine. Изначально устанавливаются модули поддержки JScript и VBScript. При установке ActivePerl по умолчанию устанавливает PerlScript.
Сценариями WSH являются файлы js - соответствующие языку JScript, vbs - VBScript и файлы wsf.
В файлах wsf - может быть помещен сценарий на произвольном языке:
файл имеет вид:
<job [id=JobID]> <script language=LanguageID> ... </script> </job>
Где JobID - некоторое строковое значение, LanguageID - определяет язык, например JScript, VBScript, PerlScript.
Пример на языке Perl:
<job> <script language=PerlScript> ... </script> </job>
В каталоге где установлено WSO в подкаталоге Demo\WSH можно увидеть примеры с использованием языков JScript, VBScript, Perl.
В скриптах WSH можно использовать объекты WSH, например объект WScript.
С помощью этого объекта можно определять обработчики событий с использованием его методов: ConnectObject и DisconnectObject.
Метод ConnectObject имеет первый аргумент - объект, а второй - префикс у набора функций, которые будут считаться обработчиками событий.
Пример на Perl:
<job> <script language=PerlScript> use Win32::OLE qw( EVENTS ); $o = Win32::OLE->new("Scripting.WindowSystemObject") or die("Oops!"); $f = $o->CreateForm(0,0,0,0); $f->{ClientWidth} = 600; $f->{ClientHeight} = 400; $f->CenterControl(); $f->TextOut(10,10,"This sample shows how to create 1st level event handler in Perl using Windows Script Host"); $f->TextOut(10,30,"(see \"Event Handling\" in WSO.CHM)."); $f->TextOut(10,50,"In this sample we create a handler of the button OnClick event"); $b = $f->CreateButton(10,100,75,25,"Button"); $WScript->ConnectObject($b,"ButtonEvents_"); sub ButtonEvents_OnClick{ $f->MessageBox("Button OnClick Event Handler"); } $f->TextOut(150,80,"Program text:"); $Edit = $f->CreateEdit(150,100,420,280,$o->Translate("ES_MULTILINE | ES_READONLY")); $Edit->{ScrollBars} = $o->Translate("SS_BOTH"); $fs = Win32::OLE->new("Scripting.FileSystemObject") or die("Oops!"); $file = $fs->OpenTextFile($WScript->{ScriptFullName},1,false); $WScript->{Interactive} = false; $Edit->{Text} = $file->ReadAll(); $WScript->{Interactive} = true; $f->Show(); $o->Run(); </script> </job>
//WindowSystemObject (WSO) sample //Copyright (C) Veretennikov A. B. 2004 o = new ActiveXObject("Scripting.WindowSystemObject"); var f = o.CreateForm(0,0,0,0); f.ClientWidth = 600; f.ClientHeight = 400; f.CenterControl(); f.TextOut(10,10,"This sample shows how to create 1st level event handler in JScript"); f.TextOut(10,30,"(see \"Event Handling\" in WSO.CHM)."); f.TextOut(10,50,"In this sample we create a handler of the button OnClick event"); b = f.CreateButton(10,100,75,25,"Button"); WScript.ConnectObject(b,"ButtonEvents_"); function ButtonEvents_OnClick(Sender) { f.MessageBox("Button OnClick Event Handler"); } f.TextOut(150,80,"Program text:"); Edit = f.CreateEdit(150,100,420,280,o.Translate("ES_MULTILINE | ES_READONLY")); Edit.ScrollBars = o.Translate("SS_BOTH"); fs = new ActiveXObject("Scripting.FileSystemObject"); file = fs.OpenTextFile(WScript.ScriptFullName,1,false); WScript.Interactive = false; Edit.Text = file.ReadAll(); WScript.Interactive = true; f.Show(); o.Run();
Пример на VBScript:
'WindowSystemObject (WSO) example 'Copyright (C) Veretennikov A. B. 2004 Set o = WScript.CreateObject("Scripting.WindowSystemObject") Set f = o.CreateForm(0,0,0,0) f.ClientWidth = 600 f.ClientHeight = 400 f.CenterControl() f.TextOut 10,10,"This sample shows how to create 1st level event handler in VBScript" f.TextOut 10,30,"(see ""Event Handling"" in WSO.CHM)." f.TextOut 10,50,"In this sample we create a handler of the button OnClick event" Set b = f.CreateButton(10,100,75,25,"Button") WScript.ConnectObject b,"ButtonEvents_" Sub ButtonEvents_OnClick(Sender) f.MessageBox "Button OnClick Event Handler" End Sub f.TextOut 150,80,"Program text:" Set Edit = f.CreateEdit(150,100,420,280,o.Translate("ES_MULTILINE | ES_READONLY")) Edit.ScrollBars = o.Translate("SS_BOTH") Set fs = WScript.CreateObject("Scripting.FileSystemObject") Set file = fs.OpenTextFile(WScript.ScriptFullName,1,false) WScript.Interactive = false Edit.Text = file.ReadAll() WScript.Interactive = true f.Show() o.Run()