Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
6_TKP_ObAvt.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
341 Кб
Скачать
☆

6.6.2 Мастера для создания сом-объектов

Мастер СОМ-объектов выполняет следующие шаги:

1. Создает новый модуль в текущем проекте.

2. Определяет новый класс, который является прямым потомком класса TCOMObject и устанавливает конструктор фабрики класса.

В общем случае, для разработчика процесс создания нового СОМ-объекта состоит из следующих шагов:

1. Проектирование СОМ-объекта.

2. Создание СОМ-объекта с использованием мастера.

3. Регистрация СОМ-объекта.

4. Тестирование СОМ-объекта.

При проектировании СОМ-объекта вы должны четко представлять, какие СОМ-интерфейсы должны быть реализованы. Мастер по умолчанию предоставляет интерфейс lunknown. Кроме того, вы обязаны определить, какой тип сервера вы хотите использовать: внутренний, локальный или удаленный. Если вы проектируете внутренний или локальный СОМ-сервер - вы должны подключить библиотеку типов, при этом маршалинг будет произведен автоматически.

В Delphi имеются мастера для создания следующих объектов:

Таблица 6.1.

Расширения СОМ

Расширение СОМ

Краткое описание

Серверы автоматизации (Automation servers)

Серверы автоматизации - это объекты, которыми можно управлять из других приложений во время работы приложения. Таким образом, автоматизация - это способность приложения программно контролировать объекты других приложений

Диспетчеры автоматизации или СОМ-клиенты (Automation Controllers, COM Clients)

Диспетчеры автоматизации - это клиенты серверов автоматизации. Они позволяют разработчику или пользователю писать сценарии для управления серверами автоматизации

Элементы управления ActiveX (ActiveX Controls)

Элементы управления ActiveX предназначены для серверов внутри процесса (in-process COM servers). Элементы ActiveX обычно используются путем встраивания в приложение-клиент

Библиотеки типов (Type Libraries)

Библиотеки типов представляют собой статичные структуры данных, которые часто сохраняются как файлы ресурсов. Они содержат детализированную информацию об объекте и его интерфейсах. Клиенты серверов автоматизации и элементы управления ActiveX используют данную информацию и всегда считают ее доступной

Страницы активного сервера - ASP (Active Server Pages)

Активные серверные страницы - это компоненты ActiveX, которые позволяют вам создавать динамически изменяющиеся Web-страницы

Активные документы (Active Documents)

Активные документы - это объекты, которые поддерживают связывание и внедрение, визуальное редактирование, перенос (drag-and-drop). В качестве примера таких документов можно представить документы Microsoft Word и книги Microsoft Excel

Визуальные межпроцессные объекты (Visual Cross-process Objects)

Визуальные межпроцессные объекты - это визуальные объекты, которыми можно управлять из других процессов

Таблица 6.2

Особенности наиболее распространенных объектов COM

СОМ-объект

Визуальность

Процесс

Связь

Библиотека типов

Активный документ (Active Document)

Обычно визуальный

Внутренний или локальный

OLE

Нет

Автоматизация (Automation)

Может быть как визуальным, так и невизуальным

Внутренний, локальный или удаленный

Автоматический маршалинг при помощи интерфейса IDispatch

Требуется для автоматического маршалинга

Элемент управления ActiveX (ActiveX Control)

Обычно визуальный

Внутренний

Автоматический маршалинг при помощи интерфейса IDispatch

Требуется

Произвольный объект интерфейса

По выбору

Внутренний

Не требуется маршалинг

Рекомендуется

Произвольный объект интерфейса

По выбору

Внутренний, локальный или удаленный

Автоматический маршалинг в зависимости от библиотеки типов, в противном случае - ручной маршалинг

Рекомендуется

  • простого СОМ-объекта;

  • объекта автоматизации;

  • элемента управления ActiveX;

  • страниц активного сервера;

  • форм ActiveX;

  • библиотек ActiveX;

  • страниц свойств;

  • библиотек типов;

  • объектов Microsoft Transaction Server (MTS).

Мастер автоматизирует задачи, характерные для создания каждого из вышеперечисленных типов СОМ-объектов. Мастер обеспечивает необходимые интерфейсы для каждого типа объекта. Для простого СОМ-объекта мастер предоставляет один требуемый СОМ-интерфейс lunknown, который устанавливает указатель интерфейса в объекте. Для объекта автоматизации мастер создает два интерфейса: lunknown и IDispatch, последний из которых обеспечивает автоматический маршалинг. Для различных COM-объектов необходимы разные наборы интерфейсов. В табл. 6.3 приведен перечень интерфейсов, предоставляемых различными мастерами. Вы можете выбрать тот мастер, который реализует необходимые для вашего СОМ-объекта интерфейсы.

Дальнейший процесс работы с мастером описан в лабораторной работы 1-TPr (см. п. 5.6.4.2).

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

Таблица 6.3.

Интерфейсы, предоставляемые различными мастерами

Мастер

Предоставляемые интерфейсы

Действия, выполняемые мастером

СОМ-сервер

lUnknown

Экспортирует необходимые программы, которые осуществляют регистрацию сервера, регистрацию класса, загрузку и выгрузку сервера и экземпляров объекта. Создает и управляет фабрикой класса для объектов, осуществленных в сервере. Указывает СОМ, какие потоковые модели используются для интерфейсов объекта. Обеспечивает библиотеку типов, если она требуется

Сервер автоматизации

lUnknown, IDispatch

Выполняет все описанное для мастера СОМ-сервера, кроме того, обеспечивает интерфейс пользователя и автоматически обеспечивает библиотеку типов

Элемент управления ActiveX

lUnknown, IDispatch, IPersistStreamlnit, IOlelnPlaceActiveObject, IPersist Storage, IViewObject, IOleObject, IViewObject2, IOleControl, IPerPropertyBrowsing, IOlelnPlaceObject, IspecifyPropertyPages

Выполняет все описанное для мастеров, расположенных выше в этой таблице, кроме того, обеспечивает свойства, события и методы для всех интерфейсов TActiveXControl. Позволяет разработчику модифицировать объект в окне редактора кода

Активные формы

lUnknown, IDispatch, IPersistStreamlnit, lOlelnPlaceActiveObject, IPersistStorage, IViewObject, IOleObject, IViewObject2, IOleControl, IPerPropertyBrowsing, IOlelnPlaceObject, IspecifyPropertyPages

Выполняет все описанное для мастера элемента управления ActiveX, кроме того, позволяет разработчику редактировать приложение

Объект активный сервер

lUnknown, IDispatch

Выполняет все описанное для мастера сервера автоматизации и генерирует страничку с расширением ASP, которая может быть загружена в обозреватель Web. Мастер позволяет разработчику модифицировать свойства и методы объекта при помощи редактора библиотеки типов

Библиотека ActiveX

Нет

Создает новую DLL для ActiveX или СОМ-сервера и обеспечивает все необходимые функции

Страница свойств

lUnknown, IPropertyPage

Создает новую страницу свойств, которую разработчик может редактировать в редакторе форм

Библиотека типов

Нет

Создает новую библиотеку типов и ассоциирует ее с активным проектом

MTS-объект

lobjectControl

Добавляет новый модуль в текущий проект, который содержит объявление MTS-объекта