автоматизация

Автоматизация (ранее известная как OLE-автоматизация) позволяет одному приложению управлять объектами, реализованными в другом приложении, или выделять объекты для управления.

Сервер автоматизации — это приложение (тип COM-сервера), предоставляющее свои функции через COM-интерфейсы другим приложениям, называемым клиентами автоматизации. Это позволяет клиентам автоматизировать некоторые функции путем прямого доступа к объектам и использования предоставляемых ими возможностей.

Серверы и клиенты автоматизации используют COM-интерфейсы, которые всегда являются производными от IDispatch , и принимают и возвращают определенный набор типов данных, называемых типами автоматизации. Предоставив методы и свойства, доступные из других приложений, можно автоматизировать любой объект, который позволяет обращаться к интерфейсу автоматизации. Автоматизация доступна для OLE- и COM-объектов. Автоматизированный объект может быть локальным или удаленным (на другом компьютере, доступном по сети), поэтому существует две категории автоматизации.

  • Автоматизация (локальная).

  • Удаленная автоматизация (через сеть с использованием DCOM).

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

Другой пример: текстовый процессор может предоставлять свои функции по проверке орфографии другим программам. Благодаря доступу к объектам поставщики способны совершенствовать свои приложения с помощью готовых функциональных возможностей других приложений. Таким образом, автоматизация применяет некоторые принципы объектно-ориентированного программирования, такие как возможность многократного использования и инкапсуляции, на уровне самих приложений.

Особое значение имеет поддержка, предоставляемая автоматизацией пользователям и поставщикам решений. За счет доступа к функциональным возможностям приложений через стандартный и четко определенный интерфейс автоматизации позволяет создавать комплексные решения на одном общем языке программирования, например 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 Демонстрирует приложение внутрипроцессного сервера автоматизации.

  • CALCDRIV Приложение клиента автоматизации для реализации INPROC.

  • MFCCALC Демонстрирует приложение клиента автоматизации.

Что вы хотите узнать больше о

Что вы хотите сделать

См. также

MFC COM