Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Интересности по COM.doc
Скачиваний:
36
Добавлен:
28.06.2014
Размер:
7.48 Mб
Скачать

Тема 4. Автоматизация

План:

1.Что понимается под автоматизацией

2. Дуальный интерфейс

1.Что понимается под автоматизацией

• Создание программируемых приложения позволяет другому программному обеспечению, также как и людям, использовать его сервисы.

• Макро язык приложения делает это, но только ограниченным способом

• Что требуется - это стандартный способ сделать любое приложение программируемым

• Обеспечение этой программируемости, использующей COM называется Автоматизацией

Точка зрения пользователя на Автоматизацию

• Автоматизация широко поддерживается сегодня

•С Автоматизацией, Вы можете записывать программы, которые автоматизируют повторные задачи

• Автоматизация может также использоваться, чтобы обратиться к определенным функциям, обеспечиваемыми приложением

• Программы, которые управляют другими приложения иногда называются скриптами

Обеспечение программируемости

•Методы в vtable сложны, чтобы вызвать их из Visual Basic

Рис. 4.1. Автоматизация создания ежемесячного сообщения.

IDispatch and Dispinterfaces

• IDispatch был первоначально определен, чтобы позволить приложениям быть программируемым из Visual Basic

• Через одиночный метод IDispatch::Invoke, клиент может вызывать любое число методов

• Dispinterface это группа методов которая может быть вызвана с использованием IDispatch: :Invoke

• Используя IDispatch, программа Visual Basic может легко вызывать методы в Dispinterface

• Программы на других языках типа C++ могут также вызывать методы, использующие IDispatch

• Большинство приложений сегодня программируемые, с

использованием IDispatch и одной или более dispinterfaces

- Клиенты и Серверы

ActiveX компоненты, действующие как серверы, были первоначально известны как серверы автоматизации

Рис. 4.2. Вызов метода в dispinterface с использованием IDispatch: :Invoke

• ActiveX компоненты, действующие как клиенты были первоначально известен как контролеры автоматизации

• Приложения могут использовать COM объекты, чтобы раскрыть их функции другому программному обеспечению

- Описывая Dispinterface

• Типы параметра, позволенные в методах dispinterface более простые, чем когда они позволены в методах интерфейса vtable

• Методы Dispinterface могут быть определены чтобы явно получить и установить свойства

• Как интерфейсы vtable, интерфейсы dispinterface могут быть определены в IDL

- Dispinterface и Marshaling

• Интерфейс Vtable может полагаться на proxy и stub для marshaling (выстраивание в определенном порядке)

• dispinterface не требует свой собственный proxy и stub

• Параметры для метода dispinterface запакованы в вариант

• Dispinterface позволяет позднее связывание, даже если никакая библиотека типов не доступна

- Пример Visual Basic

• вызов методов dispinterface из Visual Basic легкий

Рис 4.3. Приложения обычно обеспечивают программируемость путем выполнения объектов, которые поддерживают IDispatch

Sub SpellCheckO

Dim Obj As Object

Set Obj = CreateObject("Excel.Application")

Word = InputBox("Enter Word")

If Object.CheckSpelling(Word) Then

MsgBox ("Valid Word")

Else

MsgBox ("Word not found")

End If End Sub

• Visual Basic скрывает все детали

• ProgID это читаемый для людей синоним CLSID

• Документация приложения говорит программистам., какие методы приложение открывает

• Автоматизированные клиенты обычно полагаются на библиотеку типов, чтобы изучить детали о методах объекта

- Интерфейс IDispatch

• Методы : Invoke, GetIDsOfNames, GetTypeInfo, GetTypeInfoCount

- Поддержка множественных интерфейсов Dispinterface как одного объекта

• Как и другие интерфейсы vtable, IDispatch имеет идентификатор интерфейса (IID)

• Объект может позволить доступ к более, чем к одному dispinterface через Idispatch

• Клиент может вызвать методы в dispinterface по умолчанию или явно запрашивает указатель на другой интерфейс