Выбрать главу

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

Доработка объекта-сценария DateArc.wsc (JScript)

Для получения нужного нам СОМ-объекта из сформированного с помощью Windows Script Component Wizard файла DateArc.wsc нужно выполнить несколько шагов.

Во-первых, для того, чтобы использовать внутри описания СОМ-объекта символы кириллицы, необходимо добавить в директиву <?xml?> аргумент encoding="windows-1251" (без этого в сценарии не удастся даже написать по-русски комментарии):

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

Во-вторых, в контейнер <registration>  мы вставим элемент <script> с двумя функциями Register() и Unregister(), которые будут выводить на экран диалоговые окна с соответствующей информацией при регистрации компонента-сценария и его отключении соответственно:

<script language="JScript">

<![CDATA[

var WshShell;

//Инициализируем константы для диалоговых окон

var vbInformation=64;

function Register() {

 //Создаем объект WshShell

 WshShell = new ActiveXObject("WScript.Shell");

 WshShell.Popup("Компонент зарегистрирован в системе",0,

  "Компонент для архивирования файлов",vbInformation);

}