Создание и использование экземпляров серверов автоматизации
Для создания сервера автоматизации используется функция CfeateOleObject, описанная в модуле Comobj следующим образом: function CreateOleObject(const ClassName: string): IDispatch;
Функция выдает ссылку на интерфейс IDispatch объекта, зарегистрированного в реестре Windows под именем ClassName. Для определения названия класса следует изучить документацию к программному продукту, предоставляющему сервер автоматизации. Для приложения Microsoft Word таким именем является «Word.Application», а для Microsoft Excel – «Excel.Application». Аналогичные названия классов имеют и другие компоненты Microsoft Office. Если сервер автоматизации уже запущен, то ссылку на него можно получить с помощью функции GetActiveOleObject: function GetActiveOleObject(const ClassName: string): IDispatch;
Если при вызове метода GetActiveOleObject система не может обнаружить запущенную версию заданного сервера автоматизации, то будет возбуждена исключительная ситуация класса EOleError. Ссылки, которые возвращают функции GreateOleObject и GetActiveOleObject, следует сохранять в переменных для дальнейшего доступа к созданному или полученному объекту. Несмотря на то, что тип ссылки определен как IDispatch, переменная, в которую эта ссылка сохраняется, должна иметь тип Variant. Это связано с тем, что из данной переменной будут вызываться методы сервера автоматизации, которые не описаны в интерфейсе IDispatch. Var Object: Variant; Object:= CreateOleObject('Word.Application');
Использование экземпляра сервера автоматизации, то есть вызов его методов, осуществляется с помощью конструкций, обычных для вызова методов в Delphi:
<Ссылка на сервер>.<Название метода>(<Список параметров>);
Однако механизм, используемый для реального вызова, существенно отличается от вызова методов Delphi-классов. Название метода и список его параметров запаковываются в специальную структуру, которая затем передается методу invoke СОМ-объекта через ссылку, полученную при вызове функции CreateOleObject. Метод invoke определяет, какой именно его метод должен быть вызван, выполняет его, запаковывает результат и возвращает его в вызвавшую программу.
Объекты автоматизации поддерживают также и доступ к свойствам через специальным образом описанные методы. Для разрушения структур данных, связанных с использованием СОМ-объекта в программе, следует присвоить ссылке на него значение Unassigned. Данная операция не закрывает запущенный сервер автоматизации:
Var Object: Variant; Object:= CreateOleObject('Word.Application'); Object:= Unassigned; // Разрушение программных структур ЭКСПОРТ ИНФОРМАЦИИ В MICROSOFT WORD
Структура приложения Microsoft Word
Приложения, входящие в состав Microsoft Office, имеют иерархическую объектную структуру. Структура каждого приложения сложна и существенно отличается от структуры других приложений, что обусловлено различной направленностью самих приложений. Объекты иерархий Microsoft Office содержат в себе методы, количество которых приблизительно равно количеству действий, поддерживаемых при редактировании документов, поэтому их число очень велико. Иерархическая структура объектов отражает представление данных, редактируемых в том или ином приложении. Структура Microsoft Word включает в себя объект верхнего уровня Application, управляющий непосредственно приложением, и вложенные в него объекты типа Document, предоставляющие доступ к документам, открытым в данный момент. При добавлении очередного объекта Document сторонним приложением с помощью методов сервера автоматизации Microsoft Word открывает очередной документ. Аналогично объекты типа Document могут содержать в себе объекты типа Paragraph, представляющие собой ссылки на абзацы текста. Доступ к объектам различного уровня из программы-клиента, реализованной, например, на Delphi, осуществляется единообразно, через ссылки на вышестоящие в иерархии объекты. Объекты одного уровня и назначения, например, объекты типа Document, объединяются в одно свойство, так называемое семейство, которое имеет название типа объектов во множественном числе. Таким образом, объекты типа Document объединяются в свойство Documents.
Такие свойства являются, фактически списками, для которых можно определить количество элементов в каждом из них (свойство Count) и получить доступ к элементу с помощью функции Item, получающей в качестве параметра номер объекта в списке. Элементы нумеруются от единицы. Для передачи параметров в методы объектов автоматизации и присвоения значений их свойствам используется специальный тип данных OleVariant, основное отличие которого от типа Variant состоит в его совместимости с операционной системой, которая и поддерживает технологию СОМ. Итак, для экспорта информации в Microsoft Word с использованием сервера автоматизации следует: 1. Создать экземпляр сервера автоматизации «Word.Application» (запустить Word) или получить ссылку на уже запущенный экземпляр. 2. Создать новый документ. 3. Вывести информацию в созданный документ. 4. Разрушить структуры, связанные с экземпляром сервера автоматизации в программе, а также ссылки на элементы его объектной иерархии.
Запуск сервера Создание или получение ссылки на экземпляр сервера автоматизации выполняется с помощью функций CreateOleObject или GetActiveOleObject соответственно. В некоторых случаях целесообразно сначала пытаться подключиться к существующему серверу, а в случае неудачи запустить собственную версию.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|