Статьи с сайта Kochurov.Narod.ru

Содержание
  • Microsoft Windows Script Host: Универсальный Сервер Сценариев
  • Windows Script Components: Курс молодого бойца

© 2002-2004 Кочуров А.Л.


Статьи с сайта Kochurov.Narod.ru

Windows Script Components: Курс молодого бойца
< Назад | На главную

Пример создания и использования Windows Script Components

(c) 2003 Кочуров А.Л.

Windows Script Components. Что это такое и зачем они нужны?

Сервер сценариев Windows (Windows Script Host, WSH), являющийся начиная с Windows 2000 частью операционной системы, и доступный также для более ранних версий Windows, позволяет пользователю выполнять скрипты (сценарии), написанные на таких языках, как Visual Basic Script (VBScript) и JavaScript (JScript). Эта возможность по достоинству оценена продвинутыми пользователями и администраторами - WSH позволяет исполнять полноценные программы, написанные на объектно-ориентированных языках высокого уровня, а наличие большого количества зарегистрированных в системе OLE-объектов дает скриптам большие возможности по управлению компьютером и установленными на нем приложениями.

Эти OLE-объекты (точнее, Automation-серверы, а еще точнее COM-серверы с интерфейсом IDispatch) представляют собой приложения в виде DLL, EXE, OCX - файлов. Такие компоненты разрабатываются на Visual Basic, С++, Delphi и подобных компилируемых языках, то есть для их создания нужно иметь соответствующий компилятор.

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

Таким образом, достоинства WSC следующие: удобство, быстрота и простота разработки (для разработки достаточно лишь иметь текстовый редактор типа Notepad.) Кроме того, они весьма компактны и не требуют наличия библиотек времени выполнения (runtime) компилятора.

Недостатки: малое быстродействие по сравнению с компилируемыми языками и ограниченные возможности языков, на которых пишутся WSC - например, из скриптовых языков нельзя обращаться к функциям WinAPI.

Следовательно, использовать WSC имеет смысл в тех случаях, когда скрипт может реализовать требуемую функцию, быстродействие не критично и нет смысла разрабатывать компоненты на компилируемых языках. WSC также более удобны в отладке чем компилируемые компоненты - изменения вносятся прямо в исходный код и не требуют перекомпиляции. Традиционные области применения WSC - создание компонент, выполняющихся на web-серверах, встроенные в HTML-страницу компоненты, и написанные под конкретную задачу штучные "произведения", не предназначенные для широкого распространения. Вообще, WSC - бальзам на душу поборников всего лицензионного - если у вас Windows лицензионная, то и WSC - тоже :).

Чтобы не быть голословным в описании достоинств WSC, я портировал в этот формат из VB6 свою разработку - компоненту V7Backup, предназначенную для автоматизации резервного копирования информационных баз системы 1С:Предприятие 7.7. Дальнейшая часть статьи представляет собой описание шагов, необходимых для создания WSC на примере реального класса, входящего в состав V7Backup - класса V7Backup.Mail. Этот класс имеет следующие свойства и методы:

Свойства класса V7Backup.Mail

Свойство | Описание | Доступ | Значение по умолчанию
Address | Поле "Кому" письма | Чтение/Запись | ""
Body | Текст (тело) письма | Чтение/Запись | ""
CanWork | Истина, если объект нормально функционирует и почта может быть отправлена | Чтение |
From | Поле "От" письма | Чтение/Запись | ""
SMTPPassword | Пароль пользователя SMTP-сервера | Чтение/Запись | ""
SMTPPort | Порт SMTP | Чтение/Запись | 25
SMTPServer | SMTP-сервер для отправки почты | Чтение/Запись | ""
SMTPUserName | Имя пользователя SMTP-сервера | Чтение/Запись | ""
Subject | Тема письма | Чтение/Запись | ""

Методы класса V7Backup.Mail

Метод | Описание | Аргументы | Возвращаемое значение
AddAttachment | Прикрепляет указанный файл к письму в качестве вложения | FilePath | Нет
Reset | Очистка тела письма и удаление вложений | Нет | Нет
Send | Отправка письма | Нет | Нет

Забегая вперед, следует заметить, что создваемый нами объект будет представлять "обертку" для класса CDO.Message, относящегося к Collaboration Data Objects (CDO 2000). CDO 2000 является составной частью Windows, начиная с Windows 2000, поэтому в более ранних версиях ОС наш объект работать не будет, о чем и уведомит значением свойства CanWork=False.

До начала работы следует посетить раздел сайта Microsoft, посвященный скриптовым технологиям - http://www.microsoft.com/scripting и скачать оттуда последнюю версию WSH (5.6 на момент написания статьи), документацию по WSH (на английском языке), и самое главное - Windows Script Component Wizard - инструмент, позволяющий выполнить рутинную работу по созданию WSC.

Далее мы пройдем все шаги с применением WSC Wizard по созданию "скелета" класса и опишем дальнейшие ручные операции по его корректировке и добавлению необходимой функциональности. Разобьем условно создание компоненты на три шага: создание заготовки компоненты с помощью мастера, корректировка созданной заготовки, добавление функциональности.

Шаг 1. Создание заготовки компоненты с помощью мастера

Запустим Windows Script Component Wizard и заполним первую страницу как показано на рисунке:

Расположение результирующего файла (Location) можно указать любое.

На следующей странице указывается язык, на котором будет написан WSC, поддержку специальных возможностей включать не надо. На первоначальном этапе отладки имеет смысл установить флажок "Error checking" тогда при регистрации компоненты будет проверяться ее синтаксис, а после окончания разработки эту опцию отключить.

Далее заполняются свойства в соответствии с таблицей свойств объекта V7Backup.Mail.

Аналогично перечисляются и методы. Страницу мастера с настройкой событий можно в нашем случае пропустить.

На этом создание заготовки компоненты можно считать завершенным.

Шаг 2. Корректировка созданной заготовки

Откроем полученный файл MailObj.wsc любым текстовым редактором, например Notepad'ом. Мы увидим обычный XML- файл с достаточно прозрачной структурой, которая хорошо описана в документации по WSC, поэтому нет смысла здесь описывать ее еще раз. Внесем в полученный файл небольшие правки. Во первых, нужно указать кодировку XML-файла как кириллическую, иначе мы не сможем написать в нем ни одного слова на великом и могучем:

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

Далее, все объявленные нами методы не возвращают никаких значений, то есть в терминологии Visual Basic являются процедурами. Мастер объявил их для нас как функции, возвращающие значения:

function AddAttachment(FilePath)
    AddAttachment = "Temporary Value"
end function

Мы должны все три функции объявить как процедуры:

sub AddAttachment(FilePath)

end sub

Шаг 3. Добавление функциональности

В начало скрипта перед сгенерированным мастером объявлением и инициализацией переменных добавим опцию Option Explicit, означающую, что все используемые переменные должны быть обязательно объявлены, и константы CDO:

Option Explicit

' Константы CDO
Private Const cdoSendUsingMethod = "http://schemas.microsoft.com/cdo/configuration/sendusing"
Private Const cdoSendPassword = "http://schemas.microsoft.com/cdo/configuration/sendpassword"
Private Const cdoSendUserName = "http://schemas.microsoft.com/cdo/configuration/sendusername"
Private Const cdoSMTPServer = "http://schemas.microsoft.com/cdo/configuration/smtpserver"
Private Const cdoSMTPAuthenticate =  _
            "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"
Private Const cdoSMTPConnectionTimeout = _
            "http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout"
Private Const cdoSMTPServerPort =  _
            "http://schemas.microsoft.com/cdo/configuration/smtpserverport"
Private Const cdoSendUsingPort = 2
Private Const cdoBasic = 2

Далее, после объявления и инициализации переменных добавим объявление, создание и проверку объекта CDO.Message:

Private oCDOMsg ' Ссылка на объект CDO.Message

On Error Resume Next
Set oCDOMsg = Nothing
Set oCDOMsg = CreateObject("CDO.Message")
CanWork = Not (oCDOMsg Is Nothing)

И в конце скрипта заполним тела процедур, реализующих методы:

sub AddAttachment(FilePath)
' Добавляет вложение к письму
On Error Resume Next
If Not CanWork Then Exit Sub
oCDOMsg.AddAttachment FilePath
end sub

sub Reset()
'Очищает тело письма и удаляет вложения
On Error Resume Next
Body = ""
oCDOMsg.Attachments.DeleteAll ' удаляем все вложения
oCDOMsg.Configuration.Fields.Update
end sub

sub Send()
' Отправляет письмо.
On Error Resume Next
If Not CanWork And Address <> "" Then Exit Sub ' с пустым адресом отправлять не будем
oCDOMsg.From = From
oCDOMsg.To = Address
oCDOMsg.Subject = Subject
oCDOMsg.Textbody = Body

oCDOMsg.Configuration.Fields.Item(cdoSendUsingMethod) = cdoSendUsingPort
oCDOMsg.Configuration.Fields.Item(cdoSMTPConnectionTimeout) = 10
oCDOMsg.Configuration.Fields.Item(cdoSMTPAuthenticate) = cdoBasic
oCDOMsg.Configuration.Fields.Item(cdoSendPassword) = SMTPPassword
oCDOMsg.Configuration.Fields.Item(cdoSendUserName) = SMTPUserName
oCDOMsg.Configuration.Fields.Item(cdoSMTPServer) = SMTPServer
oCDOMsg.Configuration.Fields.Item(cdoSMTPServerPort) = SMTPPort

oCDOMsg.Configuration.Fields.Update
oCDOMsg.Send
end sub

Все, создание WSC завершено!

Регистрация и проверка функционирования WSC

Для регистрации WSC следует открыть Проводник Windows, найти там WSC-файл, и щелкнуть по нему левой кнопкой мыши. В появившемся контекстном меню выбрать пункт "Подключить". Аналогично осуществляется и отключение компоненты.

После регистрации можно написать небольшой скрипт для проверки функционирования объекта. Например, такой (адреса в примере вымышленные, необходимо подставить свои):

set m = CreateObject("V7Backup.Mail")
m.From = "V7Backup@coolcompany.ru"
m.Address = "admin@coolcompany.ru"
m.SMTPServer = "mail.coolcompany.ru"
m.Subject = "Проверка связи"
m.Body = "Привет"
m.Send
m.Reset
m.AddAttachment "C:\MailObj\Send.vbs"
m.Send

Скрипт отправит два письма с темой "Проверка связи". У первого в теле письма будет написано "Привет", а у второго тело будет пустое (сработает метод Reset) но оно будет иметь прикрепленный файл Send.vbs (разумеется он должен существовать по указанному в вызове метода AddAttachment пути).

На этом первоначальное знакомство с технологией Windows Script Components можно считать завершенным. Успехов в ее дальнейшем освоении!

Скачать исходные тексты компоненты MailObj.wsc (3 кб)

© 2002-2004 Кочуров А.Л.


Статьи с сайта Kochurov.Narod.ru

Microsoft Windows Script Host: Универсальный Сервер Сценариев
На главную | Далее >

Microsoft Windows Script Host: Универсальный Сервер Сценариев

Данная статья представляет собой перевод статьи Microsoft Windows Script Host: A Universal Scripting Host for Scripting Languages из MSDN Windows Script Host Technical Articles, с небольшими вставками из справки систем Windows 2000 и XP. Автором перевода также внесены небольшие не отмеченные в тексте дополнения.

(с) 2002 перевод Кочуров А.Л.

Введение

Microsoft Windows Script Host (WSH), в русских версиях Windows называемый Сервером Сценариев, представляет собой языконезависимый сервер (контроллер обработчиков сценариев) для 32-х разрядных операционных систем Microsoft Windows. В состав WSH включены обработчики сценариев (scripting engines) языков Visual Basic Script и Java Script. Другими поставщиками программного обеспечения могут быть созданы обработчики сценариев (в виде ActiveX-объектов) для других языков, таких как Perl, TCL, REXX, и Python. Примером может служить обработчик сценариев, написанных на языке V7Script, включенный фирмой 1С в состав Web-расширения системы 1С:Предприятие.

Существуют две версии сервера сценариев Windows: Wscript.exe, позволяющая задавать параметры выполнения сценариев в окне свойств, и Сscript.exe, позволяющая задавать параметры выполнения сценариев с помощью ключей командной строки. Чтобы запустить необходимую версию, введите в командной строке: Wscript.exe или Cscript.exe.

В этой статье обсуждается следующие вопросы:

  • Способы использования Сервера Сценариев Windows

  • Как установить Сервер Сценариев

  • Как использовать Сервер Сценариев

Сервер Сценариев Windows встроен в Windows 98, Windows Me, Windows 2000, Windows XP, в Internet Information Services начиная с версии 4.0. Он также доступен и для Windows 95.

Преимущества, предоставляемые Сервером Сценариев Windows

Сервер Сценариев Windows (WSH ) обеспечивает возможность запуска сценариев на 32-х разрядных платформах Windows.

Создание более мощных сценариев

Ранее единственным встроенным языком сценариев, поддерживаемым Windows, был язык команд MS-DOS (команды, исполняемые из командной строки и из BAT-файлов). Хотя этот язык является достаточно быстрым и компактным, он имеет ограниченные возможности по сравнению с языками Visual Basic Script и Java Script. На сегодняшний день Сервер Сценариев Windows позволяет пользователям использовать преимущества мощных языков сценариев, таких как Visual Basic Script и Java Script, язык команд MS-DOS также поддерживается.

Способы выполнения сценариев Windows

Архитектура ActiveX, реализующая выполнение сценариев, позволяет использовать такие языки как VB Script, Java Script, и Perl. Microsoft в настоящее время предоставляет возможность выполнять сценарии на этих языках при помощи трех видов серверов (контроллеров) на платформе Windows:

  • Microsoft Internet Explorer

  • Internet Information Services (IIS)

  • Сервер Сценариев Windows (WSH)

Internet Explorer позволяет выполнять сценарии (обычно на Java Script), содержащиеся в HTML-страницах, на клиентских машинах.

Internet Information Services поддерживает технологию Active Server Pages (ASP), позволяющую запускать сценарии (как правило, на VB Script), на Web-серверах. В частности, это используется для автоматической генерации передаваемых клиенту через Internet или по внутренней сети страниц.

Сервер Сценариев Windows (WSH) позволяет выполнять сценарии, непосредственно в графическом окне Windows или в текстовой консоли, при этом нет необходимости встраивать тексты сценариев в документ HTML. Сценарии могут быть запущены напрямую щелчком мыши на файле сценария в Проводнике Windows, либо из командной строки консоли. WSH не требует много оперативной памяти, и удобен для выполнения задач, не требующих взаимодействия с пользователем, таких как написание сценариев входа (logon), для выполнения административных задач. При запуске сценария с рабочего стола или из командной строки, сервер сценария читает и передает содержимое указанного файла зарегистрированному обработчику сценариев. Для определения языка сценария используется расширение имени файла (.vbs для VBScript, .js для JScript).

Установка Сервера Сценариев

Для использования WSH на компьютере должен быть установлен Microsoft Internet Explorer версии не ниже 3.0. Сервер сценариев использует обработчики сценариев для языков Visual Basic Script и Java Script, встроенные Internet Explorer. Для установки WSH на Windows 95 необходимо загрузить программу установки с сайта Microsoft.

Запуск сценариев из командной строки

Для выполнения сценариев с помощью сервера сценариев для командной строки (Cscript.exe) предусмотрен следующий синтаксис:

cscript [имя_сценария] [параметры_сервера] [аргументы_сценария]

Здесь:

  • имя_сценария — имя файла сценария, включая путь и расширение.

  • параметры_сервера — ключи командной строки, задающие различные свойства сервера сценариев Windows. Параметр сервера всегда начинается с двух косых черт (//).

  • аргументы_сценария — ключи командной строки, которые передаются в сценарий. Аргумент сценария всегда начинается с одной косой черты (/).

Примечания

  • Все параметры являются необязательными, однако нельзя задать аргументы сценария, не задав сценарий. При отсутствии аргументов сценария или самого сценария программа Cscript.exe выведет описание синтаксиса команды и предусмотренные ключи.

  • Ключи сервера сценариев для командной строки (см. таблицу).

    Параметр

    Действие

    //B

    Включение пакетного режима, при котором не выводятся подсказки и сообщения об ошибках.

    //D

    Включение отладчика.

    //E:обработчик

    Указание обработчика, используемого для выполнения сценария.

    //H:cscript или //H:wscript

    Регистрация Cscript.exe или Wscript.exe в качестве сервера сценариев, применяемого по умолчанию. Если ключ не задан, используется Wscript.exe.

    //I

    Включение интерактивного режима, в котором выводятся подсказки и сообщения об ошибках. Применяется по умолчанию; отменяет ключ //B.

    //Job:xxxx

    Выполнение задания xxxx, указанного в файле сценария .wsf.

    //Logo

    Отображение перед выполнением сценария эмблемы сервера сценариев Windows. Применяется по умолчанию; отменяет режим //Nologo.

    //Nologo

    Скрытие перед выполнением сценария эмблемы сервера сценариев Windows.

    //S

    Сохранение параметров текущей командной строки для данного пользователя.

    //T:nnnnn

    Указание максимального времени (в секундах), отведенного на выполнение сценария. Можно указать значение времени до 32 767 секунд. По умолчанию время выполнения не ограничено.

    //X

    Запуск сценария в отладчике.

    //?

    Вывод предусмотреных параметров командной строки и встроенной справки (аналогично запуску программы Cscript.exe без аргументов и без задания сценария).

  • Параметр времени ожидания (//T:nnnnn) ограничивает максимальное время выполнения сценария. Если время выполнения превышает заданную величину, Cscript.exe прерывает работу обработчика и останавливает процесс.

  • Для использования с сервером сценариев Windows можно создать файл .wsf, позволяющий вызвать несколько обработчиков сценариев и выполнить несколько заданий, в том числе, написанных на разных языках сценариев.

Запуск сценариев с помощью сервера сценариев для Windows

Способы запустить сценарий в окне Windows:

  • Двойным щелчком мышью по файлу или ярлыку в окне "Мой компьютер", "Поиск" или в окне Проводника Windows.

  • С использованием команды Windows "Выполнить..." - вызвать Wscript.exe с именем и параметрами сценария, либо сделать то же самое из командной строки Windows.

Если расширение файла сценария еще не связано с программой wscript.exe, то появится диалоговое окно "Открыть с помощью", в котором нужно выбрать программу, с помощью которой нужно открывать этот файл сценария. Программа wscript будет зарегистрирована как приложение по умолчанию для запуска всех файлов с данным расширением, если после выбора программы "Cервер сценариев Windows" (wscript.exe) флажок "Использовать ее для всех файлов такого типа" будет установлен. Например, если установить этот флажок при запуске программы с расширением .vbs, то wscript.exe станет приложением по умолчанию для запуска всех программ с таким расширением.

Обзор архитектуры Сервера Сценариев

Как и Microsoft Internet Explorer, Сервер Сценариев Windows может быть контроллером для ActiveX обработчиков сценариев. Однако в отличие от Internet Explorer, Сервер Сценариев Windows не требует много памяти и является идеальным средством как для интерактивных, так и для обычных сценариев, таких как сценарий входа и сценарий администрирования.

Сервер Сценариев читает и передает содержимое файла сценария зарегистрированному ActiveX обработчику сценариев (script engine), экспортирующему метод IActiveScriptParse::ParseScriptText. На рисунке 1 приведена иллюстрация этого процесса.

Рисунок 1. Диаграмма движения данных от сервера с сценариев к обработчику сценариев

Вместо тега SCRIPT (применяется в HTML) для определения языка сценария используется расширение имени файла (.vbs для VBScript, .js для JScript). Благодаря этому, разработчик сценария не обязан знать точные программные идентификаторы (ProgID) различных обработчиков сценариев. Сопоставление расширения имени файла сценария с ProgID и запуск конкретного обработчика сценариев осуществляется сервером сценариев Windows.

Источники дополнительной информации

Для получения самой последней информации о технологиях использования сценариев Windows посетите сайт Microsoft: www.microsoft.com/scripting

© 2002-2004 Кочуров А.Л.