Создание макета файла 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> описание внутреннего объекта, это никак не скажется на функционировании объекта-сценария.