Элемент объявляет свойство СОМ-объекта, которое будет доступно для клиентов автоматизации.
Атрибут name
определяет имя этого свойства (в дальнейшем внутри элемента должна быть объявлена глобальная переменная с тем же именем, с помощью которой можно будет изменять значение свойства). Объявляемое свойство может быть доступно либо только для чтения (внутри контейнера указан только элемент ), либо только для записи (внутри указан только элемент ), либо и для чтения и для записи (внутри указаны как элемент , так и элемент ).
Атрибут internalName
в элементах и задает имена функций, которые будут использоваться для чтения и записи свойства соответственно (эти функции описываются внутри контейнера ). Если же атрибут internalName
не указан, то чтение (запись) свойства производится в функции с именем get_ PropertyName (put_ PropertуName )
, где PropertyName
— имя свойства (атрибут ).
Элемент объявляет метод СОМ-объекта, который будет доступен для внешних клиентов автоматизации.
Атрибут name
определяет имя этого метода. В дальнейшем, если не указан атрибут internalName
, внутри контейнера должна быть описана функция или процедура с таким же именем
Задание атрибута internalName
позволяет внутри контейнера использовать для реализации метода функцию или процедуру с именем, отличным от значения аргумента name
.
Список параметров метода (если они имеются) задается внутри элемента с помощью элементов , каждый из которых должен содержать аргумент name
, определяющий имя параметра.
Элемент объявляет событие, которое может возникать в СОМ-объекте и обрабатываться клиентами автоматизации.
Аргумент name
, как обычно, определяет имя этого события. С помощью аргумента dispid
можно указать числовой идентификатор интерфейса события. Этот идентификатор компилируется в библиотеку типов объекта и используется в клиентском приложении для обработки нужного события.
Для того чтобы вызвать наступление события, внутри элемента используется функция fireEvent()
с именем нужного события в качестве параметра.
Элементы , и имеют тот же смысл, что и в модели WS XML (см. описание этих элементов в главе 3).
В элементе приводится сценарий на языках JScript или VBScript, который определяет поведение создаваемого СОМ-объекта — здесь нужно задать глобальные переменные, соответствующие объявленным в элементах свойствам объекта, описать функции или процедуры для объявленных с помощью элементов методов объекта и т.д.
Перейдем теперь к рассмотрению конкретного примера, для которого мы подробно опишем создание компонента-сценария, регистрацию его в системе в качестве СОМ-объекта и использование этого объекта в 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).
Читать дальше