JScript - объектно ориентированный сценарный язык, синтаксис языка похож на синтаксис языков Java и С.

Пример программы:

wso = new ActiveXObject("Scripting.WindowSystemObject")

wso.EnableVisualStyles = true

form = wso.CreateForm(0,0,0,0)

form.ClientWidth = 150
form.ClientHeight = 100
form.CenterControl()

button = form.CreateButton(10,10,75,25,"Close")
button.OnClick = ButtonClick

function ButtonClick(Sender)
{
        form.Close()
}

form.Show()

wso.Run()

QuickStart.jpg

См. также:
Больше примеров в папке Demo\JScript.
Создание объекта WindowSystemObject осуществляется путем использования оператора new ActiveXObject с указанием ProgID, например:

o = new ActiveXObject("Scripting.WindowSystemObject"); 

После создания этого объекта может быть создана форма, а затем требуемые компоненты: далее можно использовать метод Run объекта WindowSystemObject, который реализует цикл обработки оконных сообщений Windows. Обработчик события является функцией вида:

function Имя(Sender,дополнительные параметры)
{
Операторы 
}

В JScript обработчик может задаваться простым присваиванием функции к свойству или передачей функции как параметра в методе AddEventHandler. Функции можно определять заранее, например:

function ButtonClick(Sender)
{
        Sender.Form.Close();
};
Button.OnClick = ButtonClick;
или в момент присваивания ее в обработчик, например:

Button.OnClick = new Function("Sender","Sender.Form.Close();");

Следующий фрагмент кода демонстрирует добавление обработчика в список:

function MyEventHandler(Sender)
{
        Sender.Form.MessageBox("My Event Handler");
};
Button.AddEventHandler("OnClick",MyEventHandler);

Заметки:
JScript позволяет опускать часть аргументов у функций.
Примеры на языке JScript находятся в каталоге WSO в подкаталоге Demo\JScript.

Один из примеров:

//WindowSystemObject (WSO) example
//Copyright (C) Veretennikov A. B. 2004-2015

use("Common.js")

o = new ActiveXObject("Scripting.WindowSystemObject")

f = o.CreateForm(0,0,650,400)
f.CenterControl()

function MouseMove(sender,x,y,flags)
{
	sender.Form.StatusBar.item(0).Text = x+" x "+y
}

function MouseExit(sender)
{
	sender.Form.StatusBar.item(0).Text = "No Mouse In Control"
}

function MouseUp(sender,x,y,Button,Flags)
{
	sender.Form.MessageBox("MouseUp "+x+" x "+y+", Button = "+Button)
}

function KeyDown(sender,Key,Flags)
{
	if ((Key != 27) && (Key!=112)) sender.Form.MessageBox("KeyDown "+Key)
}

function ButtonClick(sender)
{
	sender.Form.MessageBox("Button "+sender.text+": OnClick")
}

var canCloseVar

function OKResult(sender)
{
	canCloseVar = true
	sender.Form.Close()
}

function CanClose(Sender,Result)
{
	canCloseVar = false
	
	var canCloseDialog = f.CreateDialogForm(0,0,510,100)
	canCloseDialog.CenterControl()
	canCloseDialog.TextOut(10,10,"Do you really want to quit this program?")

	var yesButton = canCloseDialog.CreateButton(10,30,75,25,"Yes")
	yesButton.OnClick = OKResult
	yesButton.Default = true

	var noButton = canCloseDialog.CreateButton(90,30,75,25,"No")
	noButton.OnClick = CloseFormHandler
	noButton.Cancel = true

	var helpButton = canCloseDialog.CreateButton(170,30,75,25,"Help")
	helpButton.OnClick = HelpAbout

	canCloseDialog.HelpButton = helpButton
	canCloseDialog.Color = 0xFF00FF
	canCloseDialog.ShowModal()
	canCloseDialog.Destroy()
	Result.Put(canCloseVar)
}

Button = f.CreateButton(10,10,75,25,"Demo")

Button.AddEventHandler("OnClick",ButtonClick)

CancelButton = f.CreateButton(100,10,75,25,"Close")
CancelButton.OnClick = CloseFormHandler

f.CreateStatusBar().Name = "StatusBar"
f.StatusBar.Add(100).AutoSize = true
f.OnMouseMove = MouseMove
f.OnMouseLeave = MouseExit
f.OnMouseUp = MouseUp
f.OnKeyDown = KeyDown
f.OnCloseQuery = CanClose

text1 = f.TextOut(10,60,"WindowSystemObject")
text1.Font.Size = 16
text1.Color = 255

text1.Font.Bold = true
f.TextOut(10,100,"This sample shows how to handle events from WindowsSystemObject using JScript.\x0D\x0DClicking any mouse button invokes OnMouseUp event handler.\x0D\x0DMoving mouse inside this window invokes OnMouseMove event handler.\x0D\x0D(The current mouse position is displayed in the status bar)\x0D\x0DMoving mouse outside this window invokes OnMouseLeave event handler.\x0D\x0DClicking Demo or Close buttons invokes OnClick event handler.\x0D\x0DPressing any key invokes OnKeyDown event handler.\x0D\x0DTry to close this window to invoke OnCloseQuery event.")

fileMenu = f.Menu.Add("File")
fileMenu.Add("Exit",27).OnExecute = CloseFormHandler

helpMenu = f.Menu.Add("Help")
helpMenu.Add("About","F1").OnExecute = HelpAbout

f.Show()

o.Run()

function HelpAbout(Sender)
{
	WSOAbout(Sender,"Event Handler Sample")
}

function CloseFormHandler(Sender)
{
	Sender.Form.Close()
}

function LibraryDir() {s = WScript.ScriptFullName; s = s.substring(0,s.lastIndexOf("Demo")); return s+"Demo\\JScript\\Common\\"; }
function use(s){eval(new ActiveXObject("Scripting.FileSystemObject").OpenTextFile(LibraryDir() + s,1,false).ReadAll()) }


Документация по WSO 1.1. Последние изменения:Wed Aug 12 18:10:22 2015. (C) Веретенников А. Б. 2004-2015