<?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);
}