Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Автоматизация (ранее известная как OLE Automation) позволяет одному приложению управлять объектами, реализованными в другом приложении, или предоставлять объекты, чтобы их можно было управлять.
Сервер автоматизации — это приложение (тип COM-сервера), которое предоставляет свои функциональные возможности через COM-интерфейсы другим приложениям, называемым клиентами службы автоматизации. Экспозиция позволяет клиентам службы автоматизации автоматизировать определенные функции, напрямую обращаюсь к объектам и используя предоставляемые им службы.
Серверы службы автоматизации и клиенты используют com-интерфейсы, которые всегда являются производными от IDispatch
и принимают и возвращают определенный набор типов данных, называемых типами автоматизации. Вы можете автоматизировать любой объект, предоставляющий интерфейс автоматизации, предоставляющий методы и свойства, к которым можно получить доступ из других приложений. Автоматизация доступна для объектов OLE и COM. Автоматический объект может быть локальным или удаленным (на другом компьютере, доступном в сети); Поэтому существует две категории автоматизации:
Автоматизация (локальная).
Удаленная автоматизация (через сеть, с помощью распределенного COM или DCOM).
Предоставление объектов полезно, если приложения предоставляют функциональные возможности для других приложений. Например, элемент ActiveX — это тип сервера автоматизации; приложение, в котором размещается элемент ActiveX, является клиентом автоматизации этого элемента управления.
В другом примере обработчик слов может предоставлять функциональные возможности проверки орфографии другим программам. Экспозиция объектов позволяет поставщикам улучшить свои приложения с помощью готовых функций других приложений. Таким образом, автоматизация применяет некоторые принципы объектно-ориентированного программирования, такие как повторное использование и инкапсуляция на уровне самих приложений.
Более важно, что автоматизация предоставляет поддержку пользователям и поставщикам решений. Предоставляя функциональные возможности приложений через общий, хорошо определенный интерфейс, автоматизация позволяет создавать комплексные решения на одном общем языке программирования, например Microsoft Visual Basic, а не в различных языках макросов для конкретных приложений.
Многие коммерческие приложения, такие как Microsoft Excel и Microsoft Visual C++, позволяют автоматизировать большую часть своих функций. Например, в Visual C++можно написать макросы VBScript для автоматизации сборок, аспектов редактирования кода или задач отладки.
Передача параметров в автоматизации
Одна из трудностей при создании методов автоматизации заключается в содействии обеспечению единого "безопасного" механизма передачи данных между серверами автоматизации и клиентами. Автоматизация использует тип VARIANT для передачи данных. Тип VARIANT — это объединение с тегами. Он имеет член данных для значения (это анонимное объединение C++) и член данных, указывающий тип информации, хранящейся в объединении. Тип VARIANT поддерживает ряд стандартных типов данных: 2- и 4-байтовые целые числа, 4- и 8-байтовые числа с плавающей запятой, строки и логические значения. Кроме того, она поддерживает типы HRESULT (коды ошибок OLE), CURRENCY (числовый тип фиксированной точки) и DATE (абсолютные даты и время), а также указатели на IUnknown
интерфейсы и IDispatch
интерфейсы.
Тип VARIANT инкапсулируется в классе COleVariant . Вспомогательные классы CURRENCY и DATE инкапсулируются в классах COleCurrency и COleDateTime .
Примеры автоматизации
AUTOCLIK Используйте этот пример для изучения методов автоматизации и в качестве основы для обучения удаленной автоматизации.
ACDUAL Добавляет два интерфейса в серверное приложение службы автоматизации.
CALCDRIV Клиентское приложение автоматизации, управляющее MFCCALC.
INPROC Демонстрирует серверное приложение службы автоматизации In-Process.
IPDRIVE Клиентское приложение автоматизации, управляющее INPROC.
MFCCALC Демонстрирует клиентское приложение службы автоматизации.