What is ole in windows

Поддержка OLE OLE Background

OLE — это механизм, позволяющий пользователям создавать и редактировать документы, содержащие элементы или объекты, созданные несколькими приложениями. OLE is a mechanism that allows users to create and edit documents containing items or «objects» created by multiple applications.

OLE изначально является акронимом для связывания и внедрения объектов. OLE was originally an acronym for Object Linking and Embedding. Однако теперь он называется OLE. However, it is now referred to as OLE. Части OLE, не связанные с связыванием и внедрением, теперь являются частью активной технологии. Parts of OLE not related to linking and embedding are now part of Active technology.

Документы OLE, исторические, называемые составными документами, легко интегрируют различные типы данных или компоненты. OLE documents, historically called compound documents, seamlessly integrate various types of data, or components. В качестве примеров компонентов, найденных в документах OLE, обычно используются звуковые клипы, электронные таблицы и точечные рисунки. Sound clips, spreadsheets, and bitmaps are typical examples of components found in OLE documents. Поддержка OLE в приложении позволяет пользователям использовать документы OLE, не беспокоясь о переключении между различными приложениями. OLE выполняет переключение самостоятельно. Supporting OLE in your application allows your users to use OLE documents without worrying about switching between the different applications; OLE does the switching for you.

Приложение-контейнер используется для создания составных документов, а также серверного приложения или приложения-компонента для создания элементов в документе-контейнере. You use a container application to create compound documents and a server application or component application to create the items within the container document. Любое записываемое приложение может быть контейнером, сервером или обоими приложениями. Any application you write can be a container, a server, or both.

В состав OLE входят множество различных концепций, которые работают с целью беспрепятственного взаимодействия между приложениями. OLE incorporates many different concepts that all work toward the goal of seamless interaction between applications. В число этих областей входят следующие. These areas include the following:

Связь и внедрение Linking and Embedding

Связывание и внедрение — это два метода хранения элементов, созданных в документе OLE, которые были созданы в другом приложении. Linking and embedding are the two methods for storing items created inside an OLE document that were created in another application. Общие сведения о различиях между ними см. в статье OLE Background: компоновка и внедрение. For general information on the differences between the two, see the article OLE Background: Linking and Embedding. Более подробные сведения см. в статье контейнеры и серверыстатей. For more detailed information, see the articles Containers and Servers.

Активация In-Place (визуальное редактирование) In-Place Activation (Visual Editing)

Активация внедренного элемента в контексте документа-контейнера называется активацией на месте или визуальным редактированием. Activating an embedded item in the context of the container document is called in-place activation or visual editing. Интерфейс приложения контейнера изменяется для включения функций приложения компонента, создавшего внедренный элемент. The container application’s interface changes to incorporate the features of the component application that created the embedded item. Связанные элементы никогда не активируются на месте, так как фактические данные для элемента содержатся в отдельном файле вне контекста приложения, содержащего ссылку. Linked items are never activated in place because the actual data for the item is contained in a separate file, out of the context of the application containing the link. Дополнительные сведения об активации на месте см. в статье Активация. For more information on in-place activation, see the article Activation.

Связывание и внедрение и встроенная активация предоставляют основные возможности редактирования визуальных элементов OLE. Linking and embedding and in-place activation provide the main features of OLE visual editing.

Читайте также:  Gpt windows cannot be installed to this disk the selected disk has an mbr

Автоматизация автоматизации позволяет одному приложению управлять другим приложением. Automation Automation allows one application to drive another application. Управляющее приложение называется клиентом автоматизации, а управляемое приложение называется сервером автоматизации или компонентом автоматизации. The driving application is known as an automation client, and the application being driven is known as an automation server or automation component. Дополнительные сведения об автоматизации см. в статье Клиенты автоматизации и серверы автоматизации. For more information on automation, see the articles Automation Clients and Automation Servers.

Автоматизация работает как в контекстах OLE, так и в активных технологиях. Automation works in both OLE and Active technology contexts. Можно автоматизировать любой объект, основанный на COM. You can automate any object based on COM.

Составные файлы Compound Files

Составные файлы предоставляют стандартный формат файлов, который упрощает структурированное хранение составных документов для приложений OLE. Compound files provide a standard file format that simplifies structured storing of compound documents for OLE applications. В составном файле хранилища имеют множество функций каталогов и потоков, имеющих множество функций файлов. Within a compound file, storages have many features of directories and streams have many features of files. Эта технология также называется структурированным хранилищем. This technology is also called structured storage. Дополнительные сведения о составных файлах см. в разделе контейнеры статей: составные файлы. For more information on compound files, see the article Containers: Compound Files.

Однородное Передача данных Uniform Data Transfer

Универсальный Передача данных (UDT) — это набор интерфейсов, позволяющих отправлять и получать данные стандартным образом независимо от фактического метода передачи данных. Uniform Data Transfer (UDT) is a set of interfaces that allow data to be sent and received in a standard fashion, regardless of the actual method chosen to transfer the data. Определяемый пользователем тип формирует базу для передачи данных путем перетаскивания. UDT forms the basis for data transfers by drag and drop. UDT теперь выступает в качестве базиса для существующих данных Windows, таких как буфер обмена и динамический обмен данными (DDE). UDT now serves as the basis for existing Windows data transfer, such as the Clipboard and dynamic data exchange (DDE). Дополнительные сведения о определяемых пользователем параметрах см. в статьях объекты данных и источники данных (OLE). For more information on UDT, see the article Data Objects and Data Sources (OLE).

Перетаскивание Drag and Drop

Перетаскивание — это простая в использовании методика прямого управления для переноса данных между приложениями, между окнами в приложении или даже в одном окне приложения. Drag and drop is an easy-to-use, direct-manipulation technique to transfer data among applications, among windows within an application, or even within a single window in an application. Данные, подлежащей передаче, выбираются и перемещаются в нужное место назначения. The data to be transferred is selected and dragged to the desired destination. Перетаскивание основано на равномерной переносе данных. Drag and drop is based on uniform data transfer. Дополнительные сведения о перетаскивании см. в статье перетаскивание. For more information on drag and drop, see the article Drag and Drop.

модель COM Component Object Model

Модель COM предоставляет инфраструктуру, используемую при взаимодействии объектов OLE друг с другом. The Component Object Model (COM) provides the infrastructure used when OLE objects communicate with each other. Классы OLE MFC упрощают работу с COM для программиста. The MFC OLE classes simplify COM for the programmer. COM является частью активной технологии, так как объекты COM лежат в базе технологии OLE и Active. COM is part of Active technology, because COM objects underlie both OLE and Active technology. Дополнительные сведения о COM см. в разделах библиотеки активных шаблонов (ATL) . For more information about COM, see the Active Template Library (ATL) topics.

Читайте также:  Geforce experience не записывает рабочий стол windows 10

Некоторые из наиболее важных разделов OLE рассматриваются в следующих статьях: Some of the more important OLE topics are covered in the following articles:

Для получения общих сведений о OLE, не найденных в указанных выше статьях, выполните поиск по запросу OLE в документация Майкрософт. For general OLE information not found in the above articles, search for OLE in Microsoft Docs.

OLE (Object Linking and Embedding)

OLE (Object Linking and Embedding) is Microsoft’s framework for a compound document technology. Briefly, a compound document is something like a display desktop that can contain visual and information objects of all kinds: text, calendars, animations, sound, motion video, 3-D, continually updated news, controls, and so forth. Each desktop object is an independent program entity that can interact with a user and also communicate with other objects on the desktop. Part of Microsoft’s ActiveX technologies, OLE takes advantage and is part of a larger, more general concept, the Component Object Model (COM) and its distributed version, DCOM. An OLE object is necessarily also a component (or COM object).

Some main concepts in OLE and COM are:

Microsoft terms are shown first; industry or alternative versions of those terms are shown in parentheses:

Concept What it is
OLE A set of APIs to create and display a (compound) document
Document (compound document) A presentation of different items in an «animated desktop»
Item (object; also called a component) An element in a document, such as an animated calendar, a video window, a sound player, a sound file.
Container or container application The program entity that holds a document or a control
Server or server application The program entity that holds an item within an OLE container
Embedding Adding the source data for an item to a document; use the Paste command in a container application
Linking Adding a link to the source data for an item to a document; use the Paste Link command in a container application
Visual editing Activating an item that is embedded in a document and «editing» it
Automation Having one container or server application drive another application
Compound files (structured storage) A standard file format that simplifies the storing of (compound) documents; consists of storages (similar to directories) and streams (similar to files)
Uniform Data Transfer (UDT) A single data transfer interface that accommodates drag-and-drop; clipboard; and dynamic data exchange (DDE)
Component Object Model (COM) Provides the underlying support for OLE items (objects) and ActiveX controls to communicate with other OLE objects or ActiveX controls
ActiveX control An item (object) that can be distributed and run on top of a COM
Microsoft Foundation Class (MCF) library A set of ready-made classes or templates that can be used to build container and server applications

says that OLE contains about 660 new function calls or individual program interfaces in addition to those already in Win32. For this reason, Microsoft provides the Microsoft Foundation Class (MFC) Library, a set of ready-made classes that can be used to build container and server applications, and tools such as Visual C++.

In the «Introduction to OLE» on its Developer Site, Microsoft says that «OLE» no longer stands for «Object Linking and Embedding,» but just for the letters «OLE.»

Microsoft OLE Automation

OLE Automation — технология компании Microsoft, позволяющая обращаться к COM-объектам из интерпретаторов скриптовых языков, таких, как VBScript (на настоящий момент поддержка обращений к OA-объектам есть в Windows-версиях всех популярных скриптовых языков).

Читайте также:  Файл где windows пользователи

История

Впервые появилась около 1993 как замена устаревшей возможности DDE_EXECUTE.

Среда программирования Visual Basic была практически полностью основана на OLE Automation, с такими типами данных, как String и Variant.

Практическая важность

Объектами OLE Automation являются все элементы управления ActiveX (OCX-контролы). Свойства, методы и события этих компонент реализованы с помощью OLE Automation.

Также объектами OLE Automation являются многие популярные приложения, такие, как компоненты Microsoft Office. Это дает возможность запустить и управлять даннным приложением (например, Excel, например, сформировать программно таблицу, заполнить в ней ячейки и сохранить в файл) из скрипта, написанного на скриптовом языке.

Также объектами OLE Automation являются все тэги Dynamic HTML (при использовании Trident или же — вроде как, нужно проверить — Apple WebKit или Google Chrome).

Также на этой технологии основана WMI (ее слой, отвечающий за общение с клиентскими программами) и ряд административных утилит Windows, например, управление веб-сервером IIS.

Детали

Технология определяет те COM интерфейсы, через которые интерпретатор языка будет общаться с объектом.

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

Типы данных OLE Automation (могут использоваться в свойствах, методах и событиях):

  • целые
  • плавающая точка
  • дата/время DATE — дробное (с плавающей точкой) число дней с 30.12.1989.
  • строка BSTR. Строка UTF-16 с завершающим нулем, аллоцированная специальным аллокатором в oleaut32.dll, освобождается вызовом SysFreeString.
  • указатель IUnknown на объект OLE Automation
  • массив SAFEARRAY. Может быть многомерным. Аллоцируется и освобождается семейством вызовов SafeArrayXxx в oleaut32.dll, можно получить на него указатель как на массив Си.
  • вариант VARIANT. Union с полем, указывающим тип — один из указанных выше, или другой VARIANT, или ссылка на один из этих типов (используется в аргументах «по ссылке»)

Другие типы данных (структуры, указатели не на COM объект, другие представления массивов и строк) технологией не поддерживаются.

Также технология поддерживает type libraries — информацию о типах свойств/методов/аргументов, доступную во время выполнения (нечто вроде Reflection в .NET).

Обычно технология разрешает имена свойств и методов при исполнении, никак не проверяя их на этапе разбора, и возбуждая ошибку «объект не поддерживает свойство или метод» только при исполнении (позднее связывание). Однако, если у объекта есть type library, зарегистрированная на машине, то в некоторых средах разработки можно объявить его так, что имена будут проверяться на этапе разбора. В Visual Basic это делалось операторами Dim o As Object (только позднее связывание) или же Dim o As Excel.Application (раннее связывание, но требуется установка Excel на машину построения и добавление Excel к списку использованных в проекте компонент).

На уровне языков Си/Си++ вызов OLE Automation выглядит как вызов IDispatch::Invoke, куда передаются преобразованные в константы строковые имена метода/свойства/аргументов, и значения аргументов, преобразованных в типы OLE Automation. Это крайне неудобно и вызывает расходы произодительности, потому у многих объектов реализованы т. н. дуальные интерфейсы — потомки IDispatch, реализующие и Invoke (используется скриптами и в случае объявления As Object), ровно тот же функционал через обычные COM методы (используется C++ и теми интерпретаторами, что понимают дуальные интерфейсы, как Visual Basic). При этом сохраняется ограничение на типы данных, приведенное выше. Библиотека ATL содержит в себе фреймворк поддержки дуальных интерфейсов.

Компилятор Microsoft C++ поддерживает директиву #import — включение type library (.tlb или же исполняемого файла, в который она вшита). При этом из исходного файла генерируются автоматически заголовки Си++, использующие средства comdef.h (смарт-пойнтеры на COM объекты и т. д.).

Цикл разработки объектов:

  • проектирование интерфейсов, с учетом ограничения на типы данных (нет структур и т. д.).
  • написание IDL файла (вручную или же с помощью визардов из Visual Studio).
  • написание классов, реализующих интерфейсы, объявленные в IDL.
Оцените статью