Категории
Самые читаемые
onlinekniga.com » Компьютеры и Интернет » Программное обеспечение » Windows Script Host для Windows 2000/XP - Андрей Попов

Windows Script Host для Windows 2000/XP - Андрей Попов

Читать онлайн Windows Script Host для Windows 2000/XP - Андрей Попов

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 119 120 121 122 123 124 125 126 127 ... 175
Перейти на страницу:

В этой главе мы кратко опишем механизм работы объектов-сценариев и внутреннюю структуру файлов с описанием таких объектов. Также будет подробно разобран пример создания, регистрации и использования объекта-сценария, предназначенного для создания архивных копий файлов.

Технология Windows Script Components

Сразу оговоримся, что мы будем рассматривать только объекты-сценарии, которые являются серверами автоматизации (т.е. предоставляют свои свойства и методы другим приложениям), не затрагивая вопросы разработки специальных объектов для использования внутри HTML- или ASP-страниц (Active Server Pages). 

Механизм работы объектов-сценариев базируется на технологии ActiveX Scripting, основную роль здесь играет динамическая библиотека Scrobj.dll, которая является оболочкой компонентов-сценариев и отвечает за функционирование файла-сценария в качестве СОМ-объекта. С точки зрения технологии СОМ эта библиотека для объектов-сценариев действует как внутренний сервер (inprocess server). Другими словами, оболочка компонентов-сценариев Scrobj.dll отвечает за то, чтобы при вызове из внешнего приложения метода объекта-сценария или обращении к его свойству запускалась соответствующая функция, описанная в этом сценарии. Для этого на уровне операционной системы незаметно для самого объекта-сценария и для приложения, в котором создается экземпляр этого объекта, производятся следующие действия.

□ При регистрации объекта-сценария в разделе HKEY_CLASSES_ROOTCLSID системного реестра создается новый подраздел, название которого совпадает с глобальным кодом (CLSID) регистрируемого объекта. В этом новом разделе создается подраздел InprocServer32, значением по умолчанию которого является полный путь к библиотеке Scrobj.dll. Кроме InprocServer32, создаются подразделы ProgID (программный идентификатор объекта) и ScripletURL (полный путь к файлу объекта-сценария).

□ Если создание экземпляра объекта из внешнего приложения происходит с помощью программного идентификатора (ProgID) объекта, то сначала определяется глобальный код (CLSID) этого объекта. Для этого в разделе реестра HKEY_LOCAL_MACHINESOFTWAREClasses ищется подраздел с именем, которое совпадает с программным идентификатором объекта (этот подраздел создается при регистрации объекта-сценария), и в качестве глобального кода берется значение параметра CLSID из этого подраздела.

□ По известному глобальному коду объекта происходит поиск раздела с нужным названием в HKEY_CLASSES_ROOTCLSID, после чего определяется значение подраздела InprocServer32 (путь к библиотеке Scrobj.dll) и загружается оболочка компонентов-сценариев Scrobj.dll.

□ Библиотека Scrobj.dll загружает указанный в подразделе ScripletURL файл со сценарием и перенаправляет вызовы методов объекта в этот сценарий.

Таким образом, нам остается лишь научиться правильным образом создавать файлы с исходным кодом компонентов-сценариев и регистрировать эти файлы в системе в качестве СОМ-объектов.

Компоненты-сценарии, реализованные в технологии Windows Script Components, представляют из себя файлы с расширениями wsc (WSC-файлы), которые содержат специальную XML-разметку (объектная модель WSC XML), к описанию которой мы и перейдем.

Схема WSC XML

Ранее в главе 3 отмечалось, что объектная модель, которая используется при создании многозадачных сценариев (WS-файлов), была в основном позаимствована из схемы WSC XML, поэтому многие элементы WSC-файлов окажутся вам знакомыми.

В листинге 10.1 приводится несколько упрощенная (некоторые необязательные атрибуты у XML-элементов опущены) схема, поясняющая иерархию и порядок появления элементов в WSC-файле.

Листинг 10.1. Упрощенная схема WSC XML

<?xml version="1.0" encoding="windows-1251"?>

<package>

В <component [id="ComponentID"]>

В В <registration progid="ProgID" class id="GUID" [description="Description"] [version="Version"]>

В  В <script>

Сценарии подключения и отключения

В  В </script>

В В </registration>

В В <public>

В В  <property name="PropertyName">

В В В  <get [internalName="getFunctionName"]/>

В В  В <put [internalName="getFunctionName"]/>

В  В </property>

В В  <method name= "MethodName" [internalName="FunctionName"]>

В В В  <parameter name="ParameterID"/>

В  В </method>

В В  <event name="Name" [dispid="DispID"]/>

В В </public>

  <resource id="ResourceID"> Строка или число </resource>

В В <object id="ObjID" [classld="clsid:GUID"|progid="ProgID"]/>

В В <reference [object="ProgiD"|guid="typelibGUID"][version="version"]/>

В  <script language="language">

В  В <![CDATA[

    Код сценария

В  В ]]>

В  </script>

В </component>

 Другие компоненты

</package>

Несколько замечаний относительно количества вхождений различных XML-элементов из листинга 10.1 в WSC-файл:

□ элемент <package> может содержать один или несколько элементов <component>;

□ элемент <component> должен содержать один элемент <registration> и один элемент <public>;

□ элемент <public> может содержать один или несколько элементов <property>, <method> или <event>.

Обязательными для создания компонента-сценария являются элементы <component>, <registration>, <public> и <script>.

1 ... 119 120 121 122 123 124 125 126 127 ... 175
Перейти на страницу:
На этой странице вы можете бесплатно читать книгу Windows Script Host для Windows 2000/XP - Андрей Попов.
Комментарии