В предыдущих версиях его нужно устанавливать отдельно. Последнюю версию 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()