Андрей Попов - Windows Script Host для Windows 2000/XP
Атрибут name определяет имя этого свойства (в дальнейшем внутри элемента <script> должна быть объявлена глобальная переменная с тем же именем, с помощью которой можно будет изменять значение свойства). Объявляемое свойство может быть доступно либо только для чтения (внутри контейнера <property> указан только элемент <get>), либо только для записи (внутри <property> указан только элемент <put>), либо и для чтения и для записи (внутри <property> указаны как элемент <get>, так и элемент <put>).
Атрибут internalName в элементах <get> и <put> задает имена функций, которые будут использоваться для чтения и записи свойства соответственно (эти функции описываются внутри контейнера <script>). Если же атрибут internalName не указан, то чтение (запись) свойства производится в функции с именем get_PropertyName(put_PropertуName), где PropertyName — имя свойства (атрибут <name>).
Рлемент <method>
Рлемент <method> объявляет метод РЎРћРњ-объекта, который будет доступен для внешних клиентов автоматизации.
Атрибут name определяет имя этого метода. В дальнейшем, если не указан атрибут internalName, внутри контейнера <script> должна быть описана функция или процедура с таким же именем
Задание атрибута internalName позволяет внутри контейнера <script> использовать для реализации метода функцию или процедуру с именем, отличным от значения аргумента name.
Список параметров метода (если они имеются) задается внутри элемента <method> с помощью элементов <parameter>, каждый из которых должен содержать аргумент name, определяющий имя параметра.
Рлемент <event>
Рлемент <event> объявляет событие, которое может возникать РІ РЎРћРњ-объекте Рё обрабатываться клиентами автоматизации.
Аргумент name, как обычно, определяет РёРјСЏ этого события. РЎ помощью аргумента dispid можно указать числовой идентификатор интерфейса события. Ртот идентификатор компилируется РІ библиотеку типов объекта Рё используется РІ клиентском приложении для обработки нужного события.
Для того чтобы вызвать наступление события, внутри элемента <script> используется функция fireEvent() с именем нужного события в качестве параметра.
Рлементы <resource>, <object> Рё <reference>
Рлементы <resource>, <object> Рё <reference> имеют тот же смысл, что Рё РІ модели WS XML (СЃРј. описание этих элементов РІ главе 3).
Рлемент <script>
В элементе <script> приводится сценарий на языках JScript или VBScript, который определяет поведение создаваемого СОМ-объекта — здесь нужно задать глобальные переменные, соответствующие объявленным в элементах <property> свойствам объекта, описать функции или процедуры для объявленных с помощью элементов <method> методов объекта и т.д.
Перейдем теперь к рассмотрению конкретного примера, для которого мы подробно опишем создание компонента-сценария, регистрацию его в системе в качестве СОМ-объекта и использование этого объекта в JScript-сценарии.
Пример: СОМ-объект для архивирования файлов
Представим себе следующую ситуацию. Рмеется несколько каталогов РЅР° жестком РґРёСЃРєРµ, РІ которых хранятся рабочие файлы разных пользователей. Необходимо каждый день СЃ помощью программы-архиватора arj.exe делать архивы этих файлов РІ заданный каталог, РїСЂРё этом РёРјСЏ архивного файла должно соответствовать шаблону ппММДД.arj", РіРґРµ РїРї — уникальный для каждого пользователя префикс, РњРњ — текущий месяц, ДД — текущий день.
Мы создадим компонент-сценарий DateArc.WSC, с помощью свойств и методов которого можно будет выполнить поставленную задачу.
Начнем мы с того, что определимся, какие именно свойства и методы будет содержать создаваемый объект (табл. 10.1).
Таблица 10.1. Свойства и методы объекта DateArc.WSC
Название Свойство/метод Режим доступа Описание SFrom Свойство Чтение/запись Рсходный каталог для архивирования SArch Свойство Чтение/запись Каталог, РІ котором хранятся архивные файлы SPref Свойство Чтение/запись Префикс файла-архива SMask Свойство Чтение/запись Маска, РїРѕ которой отбираются файлы для архивирования SErrMess Свойство Чтение Текст сообщения РѕР± ошибке FilesToArchiv() Метод  Метод, осуществляющий архивирование файловРмея зарегистрированный РІ системе РЎРћРњ-объект СЃ такими свойствами Рё методами, несложно написать сценарий (назовем его RunArj.js), РІ котором создавался Р±С‹ экземпляр объекта DateArc.WSC Рё производилось СЃ помощью метода FilesToArchiv() архивирование файлов РёР· РёСЃС…РѕРґРЅРѕРіРѕ РІ целевой каталог (листинг 10.2).