автоматизация
Автоматизация (ранее известная как 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 Демонстрирует приложение клиента автоматизации.
Что вы хотите узнать больше о
Что вы хотите сделать
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по