Список параметров метода (если они имеются) задается внутри элемента
<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).
Листинг 10.2. Архивирование файлов с помощью СОМ-объекта
/************* Конец *********************************************/
Создание макета файла DateArc.wsc с помощью Windows Script Component Wizard (JScript)
Из листинга 10.1 можно понять, что создание компонента-сценария связано с написанием большого количества вспомогательного кода (нужно заполнить элементы
<registration>
,
<property>
,
<method>
и
<events>
, написать функции для чтения и записи каждого из свойств объекта и т.д). Поэтому мы воспользуемся специальным мастером для создания компонентов-сценариев Windows Script Component Wizard (эту программу можно свободно получить с сайта Microsoft http://msdn.microsoft.com/scripting).
Первым шагом после запуска мастера является заполнение полей диалогового окна, представленного на рис. 10.1. Здесь нужно ввести имя создаваемого компонента ("DateArc"), имя файла с его описанием ("DateArc"), программный идентификатор ("DateArc.WSC"), версию компонента ("1.00") и каталог, в котором будет создан WSC-файл ("C:\WSC").
Рис. 10.1. Общая информация о создаваемом компоненте-сценарии
На втором шаге работы мастера мы выберем, какой язык будет использоваться при написании сценария ("JScript"), и укажем, что при регистрации и работе объекта нужно выполнять проверку ошибок ("Error checking") (рис. 10.2).