Книга: Windows Script Host для Windows 2000/XP

Использование внешних объектов автоматизации (на Microsoft Word)

закрыть рекламу

Использование внешних объектов автоматизации (на Microsoft Word)

Для того чтобы из сценария получить доступ к свойствам или методам внешнего сервера автоматизации, вначале надо "создать" соответствующий объект, т.е. загрузить в память экземпляр нужного СОМ-объекта и сохранить в переменной ссылку на этот объект. Напомним, что объект в сценарии может создаваться несколькими способами:

? с помощью метода CreateObject объекта WScript (объектная модель WSH);

? с помощью конструкции new ActiveXObject (язык JScript);

? с помощью функции CreateObject (язык VBScript).

В любом случае в используемый метод или функцию в качестве параметра передается программный идентификатор объекта (ProgID), заключенный в скобки. Пример на языке JScript:

var WA=WScript.CreateObject("Word.Application");

То же самое на VBScript:

Set WA=WScript.CreateObject("Word.Application")

Перед точкой в ProgID стоит имя библиотеки типов (type library) для объекта, которая может существовать как в виде отдельного файла с расширением tlb, так и в виде части файла с исполняемым кодом объекта (библиотека типов, содержащая сведения о СОМ-объекте, регистрируется в системном реестре при установке приложения, использующего этот объект). После точки в ProgID указывается имя класса, содержащего свойства и методы, доступные для использования другими приложениями.

Выполняя метод CreateObject, интерпретатор сценария через ProgID получает из системного реестра путь к файлам нужной библиотеки типов. Затем с помощью этой библиотеки в память загружается экземпляр запрашиваемого объекта, и его интерфейсы становятся доступными для использования в сценарии. Ссылка на созданный объект сохраняется в переменной; в дальнейшем, используя эту переменную, мы получаем доступ к свойствам и методам объекта, а также к его вложенным объектам (если они имеются).

Для примера рассмотрим, каким образом из сценария можно управлять работой Microsoft Word, который является сервером автоматизации (листинги 2.26 и 2.27).

Замечание

Более подробно объектная схема Microsoft Word описывается в главе 9.

Сначала создается главный объект Word.Application, который запускает приложение Microsoft Word:

WA=WScript.CreateObject("Word.Application");

Затем создается новый пустой документ, в результате в переменную WD заносится ссылка на объект Document:

WD=WA.Documents.Add();

Наконец, в переменную Sel заносится ссылка на объект Selection, с помощью которого можно задать тип и размер шрифта, тип выравнивания абзацев и напечатать в документе строки текста:

Sel=WA.Selection;

В результате выполнения сценариев PrintInWord.js или PrintInWord.vbs в новом документе Word печатаются две строки текста (рис. 2.10), после чего с помощью метода PrintOut объекта Document содержимое документа выводится на принтер:

WD.PrintOut();


Рис. 2.10. Результат выполнения сценариев PrintInWord.js

Листинг 2.26. Использование сервера автоматизации Microsoft Word (JScript)

/*******************************************************************/
/* Имя: PrintInWord.js                                             */
/* Язык: JScript                                                   */
/* Описание: Использование из сценария внешнего объекта            */
/*           автоматизации (Microsoft Word)                        */
/*******************************************************************/
var WA,WD,Sel;  //Объявляем переменные
//Создаем объект--приложение Microsoft Word
WA=WScript.CreateObject("Word.Application");
//Можно было использовать конструкцию
//WA=new ActiveXObject("Word.Application");
WD=WA.Documents.Add();  //Создаем новый документ (объект Document)
WA.Visible=true;  //Делаем Word видимым
Sel=WA.Selection;  //Создаем объект Selection
Sel.Font.Size=14;  //Устанавливаем размер шрифта
Sel.ParagraphFormat.Alignment=1;  //Выравнивание по центру
Sel.Font.Bold=true;  //Устанавливаем полужирный шрифт
Sel.TypeText("Привет!n"); //Печатаем строку текста
Sel.Font.Bold=false; //Отменяем полужирный шрифт
Sel.ParagraphFormat.Alignment=0;  //Выравнивание по левому краю
//Печатаем строку текста
Sel.TypeText("Эти строки напечатаны с помощью WSH.");
WD.PrintOut();   //Выводим документ на принтер
/*************  Конец *********************************************/

Листинr 2.27. Использование сервера автоматизации Мiсrоsоft Word (VBScript)

'*******************************************************************
' Имя: PrintInWord.vbs
' Язык: VBScript
' Описание: Использование из сценария внешнего объекта
'           автоматизации (Microsoft Word)
'*******************************************************************
Option Explicit
Dim WA,WD,Sel  ' Объявляем переменные
'Создаем объект--приложение Microsoft Word
Set WA=WScript.CreateObject("Word.Application")
' Можно было использовать конструкцию
' Set WA=CreateObject("Word.Application")
Set WD=WA.Documents.Add  'Создаем новый документ (объект Document)
WA.Visible=true  ' Делаем Word видимым
Set Sel=WA.Selection  'Создаем объект Selection
Sel.Font.Size=14 'Устанавливаем размер шрифта
Sel.ParagraphFormat.Alignment=1  'Выравнивание по центру
Sel.Font.Bold=true  'Устанавливаем полужирный шрифт
Sel.TypeText "Привет!" & vbCrLf  'Печатаем строку текста
Sel.Font.Bold=false  'Отменяем полужирный шрифт
Sel.ParagraphFormat.Alignment=0  'Выравнивание по левому краю
'Печатаем строку текста
Sel.TypeText "Эти строки напечатаны с помощью WSH."
WD.PrintOut   'Выводим документ на принтер
'*************  Конец *********************************************

Оглавление книги


Генерация: 1.154. Запросов К БД/Cache: 4 / 1
поделиться
Вверх Вниз