Создание макета файла DateArc.wsc с помощью Windows Script Component Wizard (JScript)

Создание макета файла 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).

Рис. 10.2. Определение характеристик компонента-сценария

Третий шаг работы мастера позволяет описать свойства создаваемого объекта. Здесь для каждого свойства мы указываем его имя (колонка "Name"), тип ("Read" — только чтение, "Write" — только запись, "Read/Write" — чтение и запись) и значение по умолчанию (колонка "Default") (рис. 10.3).

Рис. 10.3. Задание свойств компонента-сценария

На четвертом шаге описываются методы объекта. В нашем случае объект DateArc.WSC имеет единственный метод FilesToArchiv(), вызываемый без параметров (рис. 10.4).

Рис. 10.4. Задание методов компонента-сценария

На пятом шаге нам предлагается указать, какие события могут возникать в объекте. Для нашего компонента-сценария мы не будем задавать никаких событий (рис. 10.5).

Рис. 10.5. Задание событий компонента-сценария

Шестой шаг является заключительным в работе мастера. Здесь нам выдается вся информация о создаваемом объекте (рис. 10.6). После нажатия кнопки Finish в каталоге C:WSC будет создан файл DateArc.wsc, приведенный в листинге 10.3.

Рис. 10.6. Итоговая информация о создаваемом компоненте-сценарии

Листинг 10.3. Файл DateArc.wsc, сгенерированный программой Windows Script Component Wizard (JScript)

<?xml version="l.0"?>

<component>

 <?component error="true" debug="false"?>

 <registration description="DateArc" progid="DateArc.WSC" version="1.00" classid="{424ac2bc-5732-4dea-bel7-0211af99cd79}">

 </registration>

 <public>

  <property name="SFrom">

   <get/>

   <put/>

  </property>

  <property name="SArch">

   <get/>

   <put/>

  </property>

  <property name="SPref">

   <get/>

   <put/>

  </property>

  <property name="SMask">

   <get/>

   <put/>

  </property>

  <property name="SErrMess">

   <get/>

  </property>

  <method name="FilesToArchiv">

  </method> </public>

  <script language="JScript">

   <![CDATA[

var description = new DateArc;

function DateArc() {

 this.get_SFrom = get_SFrom;

 this.put_SFrom = put_SFrom;

 this.get_SArch = get_SArch;

 this.put_SArch = put_SArch;

 this.get_SPref = get_SPref;

 this.put_SPref = put_SPref;

 this.get_SMask = get_SMask;

 this.put_SMask = put_SMask;

 this.get_SErrMess = get_SErrMess;

 this.FilesToArchiv = FilesToArchiv;

}

var SFrom;

var SArch;

var SPref;

var SMask;

var SErrMess;

function get_SFrom() {

 return SFrom;

}

function put_SFrom(newValue) {

 SFrom = newValue;

}

function get_SArch() {

 return SArch;

}

function put_SArch(newValue) {

 SArch = newValue;

}

function get_SPref() {

 return SPref;

}

function put_SPref(newValue) {

 SPref = newValue;

}

function get_SMask() {

 return SMask;

}

function put_SMask(newValue) {

 SMask = newValue;

}

function get_SErrMess(){

 return SErrMess;

}

function FilesToArchiv() {

 return "Temporary Value";

}

  ]]>

 </script>

</component>

Как мы видим из листинга 10.3, при использовании в компоненте-сценарии языка JScript в результате работы мастера внутрь контейнера <script> помещаются:

? глобальные переменные, которые соответствуют объявленным в элементах <property> свойствам;

? заготовки функций с префиксами get_ и put_, которые осуществляют чтение и запись свойств объекта;

? заготовки функций, которые соответствуют объявленным в элементах <method> методам.

Кроме этого, создается экземпляр внутреннего объекта, содержащего те же свойства и методы, что были описаны внутри элемента <public> (переменная description). Имя этого внутреннего объекта совпадает с именем класса описываемого СОМ-объекта (в нашем случае это "DateArc").

Замечание

Создаваемый мастером внутренний объект нужен только в иллюстративных целях, т.к. здесь наглядно видно, какие именно свойства и методы будет предоставлять клиентам автоматизации компонент-сценарий. Если убрать из контейнера <script> описание внутреннего объекта, это никак не скажется на функционировании объекта-сценария.