Читаем Delphi. Трюки и эффекты полностью

На первый взгляд, ничего существенного не происходит, но результат работы программы можно заметить путем просмотра запущенных процессов (не путать с задачами). В приложении Диспетчер задач среди процессов различных приложений можно увидеть WordCOM. ехе. Этот факт говорит нам о том, что созданное нами посредством СОМ приложение подключилось к серверу Microsoft Word и запустило его. Фактически в системе произошло следующее. В реестре был найден зарегистрированный ранее СОМ-сервер приложения Microsoft Word. Используя все тот же реестр, был найден путь к программе и произведен ее запуск. Вследствие этого мы заметили появление процесса, отвечающего за работу редактора Microsoft Word.

Но для того чтобы лучше понять запуск приложения Microsoft Word, приведем фрагмент исходного текста, результат работы которого аналогичен (листинг 9.1).

...

Листинг 9.1.

Запуск Microsoft Word

procedure TFormStartWord.ButtonStartClick(Sender: TObject);

var

//Переменная, интерфейс к объекту

Wordvar : OleVariant;

file_Name : string;

begin

//Начало блока перехвата исключения

try

file_Name := ExtractFilePath(Application.EXEName) +

\'worddoc.DOC\

//Инициализируем объект интерфейса

//для доступа к серверу COM Microsoft Word

Wordvar := CreateOleObject(\'Word.Application\');

//Добавление документа

wordvar.application.documents.add;

wordvar.application.activedocument.range.insertAfter(now);

//Сохранение документа (аналог действиям: «Сохранить как…»,

//с указанием имени файла)

wordvar.application.activedocument.saveas(fileName);

//Завершение работы с приложением и выгрузка COM-сервера

wordvar.application.quit(true,0);

end;

Предложенный исходный текст демонстрирует подключение к серверу без помощи компонента среды разработки. Для корректной работы необходимо в раздел uses включить COMOBJ – модуль работы с объектом СОМ. Важно отметить, что наличие функций, вызываемых для объекта wordvar, определяется в период выполнения. Это значит, что ошибка может обнаружиться только в период выполнения программы, поэтому весь код работы с объектом помещен в блок try.

Класс TOLEServer

На вкладке Servers находится набор компонентов для доступа к серверам автоматизации. Не все компоненты возвращают ссылку на объект Application, то есть могут быть получены интерфейсы для доступа к таким вложенным объектам, как документ Microsoft Word или рабочая книга Microsoft Excel. Все компоненты унаследованы от класса TOLEServer, который наследует свойства класса Tcomponent. TOLEServer является базовым классом всех СОМ-серверов. Кроме этого, данный класс имеет еще несколько свойств и методов для управления связью с СОМ-сервером. Среди таковых уже знакомое нам свойство AutoConnect, которое автоматически запускает СОМ-сервер и извлекает из него интерфейс, обеспечивающий связь с контроллером. Еще одно важное свойство класса TOLEServer – это ConnectKind, указывающее тип процесса, с которым устанавливается связь. Свойство используется методом Connect, который вызывается автоматически, если свойство AutoConnect истинно. В табл. 9.1 описаны значения, которые может принимать ConnectKind.

Таблица 9.1. Значение свойства ConnectKind

Более подробно следует рассмотреть значение свойства ConnectKind, равное ckAttachToInterface. Соединение с сервером производится посредством использования главного интерфейса Application, но, например, возникает необходимость подключить к нашему проекту такие компоненты как WordDocument или WordParagraphFormat. В этом случае мы просто подключаемся к уже существующему интерфейсу, а не создаем его заново. Также это может быть необходимо, когда контроллер должен отслеживать события, происходящие в СОМ-сервере.

9.4. Управление Microsoft Word и Microsoft Excel

Трюки в Microsoft Word

Перейти на страницу:

Похожие книги

1001 совет по обустройству компьютера
1001 совет по обустройству компьютера

В книге собраны и обобщены советы по решению различных проблем, которые рано или поздно возникают при эксплуатации как экономичных нетбуков, так и современных настольных моделей. Все приведенные рецепты опробованы на практике и разбиты по темам: аппаратные средства персональных компьютеров, компьютерные сети и подключение к Интернету, установка, настройка и ремонт ОС Windows, работа в Интернете, защита от вирусов. Рассмотрены не только готовые решения внезапно возникающих проблем, но и ответы на многие вопросы, которые возникают еще до покупки компьютера. Приведен необходимый минимум технических сведений, позволяющий принять осознанное решение.Компакт-диск прилагается только к печатному изданию книги.

Юрий Всеволодович Ревич

Программирование, программы, базы данных / Интернет / Компьютерное «железо» / ОС и Сети / Программное обеспечение / Книги по IT
Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ
Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ

Эта книга представляет собой перевод третьего издания американского бестселлера Effective C++ и является руководством по грамотному использованию языка C++. Она поможет сделать ваши программы более понятными, простыми в сопровождении и эффективными. Помимо материала, описывающего общую стратегию проектирования, книга включает в себя главы по программированию с применением шаблонов и по управлению ресурсами, а также множество советов, которые позволят усовершенствовать ваши программы и сделать работу более интересной и творческой. Книга также включает новый материал по принципам обработки исключений, паттернам проектирования и библиотечным средствам.Издание ориентировано на программистов, знакомых с основами C++ и имеющих навыки его практического применения.

Скотт Мейерс , Скотт Майерс

Программирование, программы, базы данных / Программирование / Книги по IT