□ Библиотека Scrobj.dll загружает указанный в подразделе ScripletURL
файл со сценарием и перенаправляет вызовы методов объекта в этот сценарий.
Таким образом, нам остается лишь научиться правильным образом создавать файлы с исходным кодом компонентов-сценариев и регистрировать эти файлы в системе в качестве СОМ-объектов.
Компоненты-сценарии, реализованные в технологии Windows Script Components, представляют из себя файлы с расширениями wsc (WSC-файлы), которые содержат специальную XML-разметку (объектная модель WSC XML), к описанию которой мы и перейдем.
Ранее в главе 3 отмечалось, что объектная модель, которая используется при создании многозадачных сценариев (WS-файлов), была в основном позаимствована из схемы WSC XML, поэтому многие элементы WSC-файлов окажутся вам знакомыми.
В листинге 10.1 приводится несколько упрощенная (некоторые необязательные атрибуты у XML-элементов опущены) схема, поясняющая иерархию и порядок появления элементов в WSC-файле.
Листинг 10.1. Упрощенная схема WSC XML
Сценарии подключения и отключения
Строка или число
Код сценария
]]>
Другие компоненты
Несколько замечаний относительно количества вхождений различных XML-элементов из листинга 10.1 в WSC-файл:
□ элемент может содержать один или несколько элементов ;
□ элемент должен содержать один элемент и один элемент ;
□ элемент может содержать один или несколько элементов , или .
Обязательными для создания компонента-сценария являются элементы , , и .
Опишем теперь элементы XML, использующиеся в WSC-файлах, более подробно.
В WSC-файлы можно вставлять комментарии двумя разными способами: с помощью элемента или элемента . Например:
или
Второй комментарий
Напомним, что эти элементы являются стандартными для разметки W3C XML 1.0 (см. главу 3). Для того чтобы использовать символы кириллицы в файлах компонентов-сценариев, нужно обязательно в элементе указать атрибут encoding
со значением, соответствующим используемой кодировке, например:
Этот элемент необходим в тех WSC-файлах, в которых с помощью элементов определено более одного компонента. В этом случае является контейнером для элементов .
Если же в WSC-файле описан только один компонент, то элемент можно не использовать.
Внутри элемента описывается один компонент-сценарий (СОМ-объект). Необязательный атрибут id
определяет идентификатор объекта (это может понадобиться в том случае, когда в одном WSC-файле находится несколько СОМ-объектов).
В элементе приводится информация, которая необходима для регистрации в системе компонента-сценария в качестве СОМ-объекта.
Атрибуты progid
и classid
задают соответственно программный идентификатор и глобальный код, с помощью которых компонент -сценарий может быть использован в других приложениях (например, progid="MyClass.MyObject"
и classid="{424ac2bc-5732-4dea-be17-0211af99cd79}"
). Из этих двух атрибутов обязательно должен быть указан хотя бы один (можно указать и оба). Если в элементе приведен только атрибут progid
, то глобальный код (GUID) для описываемого объекта будет сгенерирован автоматически при регистрации объекта в системе. Рекомендуется, однако, явно указывать глобальный код объекта, т.к. в противном случае этот код может оказаться различным при регистрации объекта на разных машинах.
Замечание
Глобальный код объекта может быть сгенерирован с помощью описанной ниже программы Windows Script Component Wizard.
С помощью атрибута description
можно задать краткое описание объекта, которое будет занесено в системный реестр при регистрации объекта.
Атрибут version
позволяет указать номер версии описываемого объекта. Этот номер позволяет запрашивать из приложения определенную версию СОМ-объекта (он должен быть указан через точку после программного идентификатора объекта, например "Myclass.MyObject.1"
).
С помощью элемента внутри контейнера можно указать две функции, одна из которых будет вызываться при регистрации объекта в системе (эта функция должна иметь имя Register()
), а другая — при удалении объекта из системы (эта функция должна иметь имя Unregister()
).
В элементе описываются те свойства, методы и события объекта, которые после его регистрации будут доступны извне другим приложениям (клиентам автоматизации). Другими словами, этот элемент является контейнером для элементов , и .
Читать дальше