Механизм object linking and embedding ole в windows позволяет

Работа по теме: шпора по информатике. Глава: Вопрос 9. Технология связи и внедрения объектов ole. ВУЗ: СКИ.

Связывание
и внедрение объектов (Object Linking and Embedding,
OLE)—это средство, позволяющее в одном
документе комбинировать данные,
обрабатываемые разными приложениями.
Здесь под объектами подразумеваются
данные, созданные в одном приложении,
а используемые в любом другом,
поддерживающим технологию OLE. Например,
таблица базы данных может являться
частью документа Excel наравне с собственными
таблицами Excel. При редактировании объекта
используются средства создавшего его
приложения. С появлением версии OLE 2
стало возможным редактировать объекты,
не вызывая породивших их приложений.
Когда пользователь хочет изменить
данные связанного или внедренного
объекта, приложение, поддерживающее
OLE 2, заменяет свои меню и панели
инструментов на соответствующие меню
и панели инструментов породившего
объект приложения. По окончании
редактирования объекта «родной»
интерфейс приложения возвращается
обратно. Помимо упрощения процедуры
редактирования связанных и внедренных
объектов, OLE 2 позволяет перетаскивать
данные между открытыми приложениями.
Связывание и внедрение — два схожих
способа обработки данных объекта. Они
отличаются местом хранения обрабатываемых
данных и возможностями их изменения.
Внедрение и связывание обладают одним
очень важным преимуществом — эти операции
позволяют вставлять в документы такие
данные, с которыми программы, обрабатывающие
документ-приемник, не могут работать
непосредственно. Например, посредством
связывания или внедрения вы можете
вставить музыкальный фрагмент или
видеоклип в документы, создаваемые
большинством текстовых процессоров,
программ для работы с базами данных и
электронных таблиц. При этом в документах,
на том месте, куда вы вставили звук или
видео, будет изображаться соответствующий
значок. Когда вы захотите прослушать
звуковой фрагмент или просмотреть
видео, просто сделайте по такому значку
двойной щелчок мышью. После этого Windows
проиграет соответствующий фрагмент
при помощи того приложения, в котором
данный объект был создан

1.
ВНЕДРЕНИЕ И СВЯЗЫВАНИЕ

Механизм
встраивания и связывания объектов
(Object Linking and Embedding — OLE) в среде Windows позволяет
существенно упростить обработку
иллюстраций.

Различают
два способа размещения объектов в
текстовых документах. Это внедрение и
связывание.

1.1
Внедрение объектов

Внедрение
объектов предполагает хранение оригинала
объекта в составе документа, в который
он вставлен. Внедренный объект так же,
а и при связывании, создается в своем
«родном » приложении, но существует
только в одном экземпляре, внедренном
в другой документ. Чтобы изменить
внедренный объект, дважды щелкните на
нем. Он будет изменен при помощи «родного
» ему приложения и сохранен в составе
составного документа. Microsoft Office 2000
является пакетом приложений, поддерживающих
технологию OLE 2 и интегрированных при
помощи этой технологии. Вы можете
связывать и внедрять любые объекты
приложений Office в создаваемые вами
документы

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

После
вставки рисунка объем документа Word
увеличивается, поскольку графика
сохраняется вместе с документом. Чтобы
избежать увеличения объема документа,
следует создать связь с графическим
файлом, а не сохранять графическое
изображение в документе.

После
выполнения команды Вставка | Объект на
экране появляется следующее диалоговое
окно, в котором на вкладке Создание
выбирается приложение, с помощью которого
требуется создать объект.

Если
включить опцию В виде значка, то в
документе будет находиться не изображение
объекта, а его значок, двойной щелчок
на котором откроет объект.

По
щелчку на кнопке OK открывается выбранное
приложение, где создается объект. После
этого вместо инструментов Microsoft Word
появляются инструменты выбранного
приложения, либо это приложение
открывается в новом окне.

Для
возврата к документу в первом случае
нужно щелкнуть на свободном от рисунка
месте. Во втором случае — при выполнении
команды меню Файл | Выход и возврат …,
где вместо многоточия располагается
имя документа Word. Созданный объект будет
помещен в Word-документ. Двойной щелчок
на объекте приведет к автоматической
загрузке соответствующего приложения
и размещения в нем данного объекта.

1.1
Связывание объектов

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

Чтобы
создать связь с графическим файлом, не
включая его в документ, вызовите команду
Вставка | Объект и в появившемся диалоговом
окне перейдите на вкладку Создание из
файла.

В строке
Имя файла указывается имя необходимого
файла. Это имя можно набрать вручную с
клавиатуры или воспользоваться кнопкой
Обзор.

Установка
флажка Связь с файлом позволяет не
внедрить файл в документ, а установить
связь между документом и файлом. Таким
образом, описываемый механизм можно
использовать как для реализации внедрения
(не устанавливать флажок Связь с файлом),
так и связывания (установить флажок
Связь с файлом).

Внешне
внедренный рисунок ничем не отличается
от связанного.

Если
документ имеет связанные объекты, то,
используя пункт меню Правка | Связи,
можно изменить параметры связей.

2.2.1
Краткая характеристика элементов
диалогового окна Правка | Связи.

· кнопка
Обновить — используется для обновления
связей. Прежде чем воспользоваться ею,
необходимо выделить обновляемые связи
щелчком левой кнопки мыши по нужной
связи;

· кнопка
Открыть источник — открытие приложения,
использованного для создания объекта;

· кнопка
Сменить источник — нажатие этой кнопки
позволяет изменить исходный файл для
текущей связи;

· кнопка
Разорвать связь — удаляет связь между
документом и файлом. Файл из связанного
превращается во внедренный, что не
позволит, при изменении файла, видеть
эти изменения в документе;

· флажок
Разорвать связь — установка этого флажка
позволит никогда не обновлять связь.

2.2.2
Способ обновления связи:

o
автоматически — обновление связи будет
осуществляться автоматически при
открытии документа;

o по
запросу — для каждой связи при открытии
документа будет выдано сообщение на ее
обновление;

Использование
связанных объектов позволяет избежать
существенного увеличения размеров
документа, но имеется опасность «потери»
связанных файлов, например, при копировании
документа на дискету. Если документ
содержит связанные объекты, то их тоже
нужно скопировать.

2.
ЗАКЛЮЧЕНИЕ

Связывание
и внедрение — два схожих способа обработки
данных объекта. Они отличаются местом
хранения обрабатываемых данных и
возможностями их изменения.

Внедрение
объектов предполагает хранение оригинала
объекта в составе документа, в который
он вставлен. При внедрении рисунков и
иллюстраций (меню Вставка, команда
Объект) в документ вместе с объектом
(например, иллюстрацией) сохраняется
полная информация о форматах, используемых
в программе-источнике, ее имени и т.п.

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

From Wikipedia, the free encyclopedia

Object Linking & Embedding (OLE) is a proprietary technology developed by Microsoft that allows embedding and linking to documents and other objects. For developers, it brought OLE Control Extension (OCX), a way to develop and use custom user interface elements. On a technical level, an OLE object is any object that implements the IOleObject interface, possibly along with a wide range of other interfaces, depending on the object’s needs.

Overview[edit]

OLE allows an editing application to export part of a document to another editing application and then import it with additional content. For example, a desktop publishing system might send some text to a word processor or a picture to a bitmap editor using OLE. The main benefit of OLE is to add different kinds of data to a document from different applications, like a text editor and an image editor. This creates a Compound File Binary Format document and a master file to which the document makes reference. Changes to data in the master file immediately affect the document that references it. This is called «linking» (instead of «embedding»).

OLE is also used for transferring data between different applications using drag and drop and clipboard operations.

History[edit]

OLE 1.0[edit]

OLE 1.0, released in 1990, was an evolution of the original Dynamic Data Exchange (DDE) concept that Microsoft developed for earlier versions of Windows. While DDE was limited to transferring limited amounts of data between two running applications, OLE was capable of maintaining active links between two documents or even embedding one type of document within another.

OLE servers and clients communicate with system libraries using virtual function tables, or VTBLs. The VTBL consists of a structure of function pointers that the system library can use to communicate with the server or client. The server and client libraries, OLESVR.DLL and OLECLI.DLL, were originally designed to communicate between themselves using the WM_DDE_EXECUTE message.

OLE 1.0 later evolved to become an architecture for software components known as the Component Object Model (COM), and later DCOM.

When an OLE object is placed on the clipboard or embedded in a document, both a visual representation in native Windows formats (such as a bitmap or metafile) is stored, as well as the underlying data in its own format. This allows applications to display the object without loading the application used to create the object, while also allowing the object to be edited, if the appropriate application is installed.

The Object Packager, a component of OLE, shipping from Windows 3.1 up to Windows XP allows a non-OLE object to be «packaged» so it can be embedded into an OLE client.

OLE 2.0[edit]

OLE 2.0 was the next evolution of OLE, sharing many of the same goals as version 1.0, but was re-implemented on top of the COM instead of using VTBLs directly. New features were OLE automation, drag-and-drop, in-place activation and structured storage. Monikers evolved from OLE 1 object names, and provided a hierarchical object and resource naming system similar to URLs or URIs, which were independently invented. Windows now has merged the two technologies supporting a URL Moniker type, and a Moniker URL scheme.

OLE custom controls[edit]

OLE custom controls were introduced in 1994 as a replacement for the now deprecated Visual Basic Extension controls. Instead of upgrading these, the new architecture was based on OLE. In particular, any container that supported OLE 2.0 could already embed OLE custom controls, although these controls cannot react to events unless the container supports this. OLE custom controls are usually shipped in the form of a dynamic link library with the .ocx extension. In 1996 all interfaces for controls (except IUnknown) were made optional to keep the file size of controls down, so they would download faster; these were then called ActiveX Controls.

Technical details[edit]

OLE objects and containers are implemented on top of the Component Object Model; they are objects that can implement interfaces to export their functionality. Only the IOleObject interface is compulsory, but other interfaces may also need to be implemented if the functionality exported by those interfaces is required.

To ease understanding of what follows, some terminology has to be explained. The view status of an object is whether the object is transparent, opaque, or opaque with a solid background, and whether it supports drawing with a specified aspect. The site of an object is an object representing the location of the object in its container. A container supports a site object for every object contained.

What follows is a list of interfaces, grouped by the object that usually needs to implement them. Interfaces usually implemented by the OLE object are usually called on by the OLE container, and vice versa. Note that in the following list indentation indicates interface inheritance. All non-indented interfaces derive from IUnknown.

OLE object[edit]

DataObject
When implemented, enables the transfer of data, and notification of data changes. It must be implemented by objects that are to support drag-and-drop, being copied to or pasted from the clipboard, or being linked or embedded in a containing document.
ObjectWithSite
Allows the caller to inform the OLE object of its site. This functionality is also provided by OleObject, but ObjectWithSite can be used, when supported, if OleObject is not used for other matters.
OleCache
Allows visual presentations from a DataObject to be cached. This allows an embedded object to store its visual representation, thus enabling it to be displayed later without needing to start the application that was used to create the object.
Usually the stock implementation is used.

OleCache2
Provides more fine-grained control over caching.
Usually the stock implementation is used.
OleCacheControl
This interface is not called by the container, but internally by the object to allow it to receive notifications of when its DataObject is running, thereby allowing it to subscribe to notifications of data changes of that object and thus allowing it to update the cached presentation properly.
Usually the stock implementation is used.
OleDocument
Allows the OLE object to support multiple views of its data, as well as a few related functions.
OleDocumentView
A document object (an object that implements OleDocument) implements this interface for every view. It allows the caller to set the site of the object, query and set the size of the object and to show and activate it, as well as some related functions.
OleWindow
OleInPlaceActiveObject
Called by the outermost container of an object to interact with it while it’s active, e.g. to process accelerator keys in the container’s message queue that are meant for the contained object.
OleInPlaceObject
Called by the container to activate or deactivate the object.

IOleInPlaceObjectWindowless
A windowless object is an object that doesn’t have its own window but it instead displayed in its container’s window. It is used by the container to relay messages received by the container’s window that are intended for the contained object. For example, if the mouse is moved over a window, Windows places a mouse move message along with the mouse coordinates in the message queue of the window. If this window contains windowless embedded objects, the message may have to be relayed to such an object if the coordinates of the mouse-pointer are over this object. For similar reasons this interface also provides access to the object’s DropTarget interface.
OleLink
Allows the object to support linking, e.g. by allowing the container to set the source of a linked object.
Usually the stock implementation is used.
OleObject
Arguably the most important interface for an OLE object. For example, it allows the container to inform the object of its site, initialize the object from data, to open and close it, to query and set the size of the object, to ask for notifications on the container’s AdviseSink and to execute objects defined as «verbs» on the object. These verbs often include «Open» or «Edit», but can also include other verbs. One of the verbs is defined to be the principal verb, and it is executed when the user double-clicks an object.
ViewObject
Allows an object to draw itself directly, without passing a DataObject to the container. For objects that support both DataObject and this interface, the underlying implementation is usually shared.

ViewObject2
Additionally allows the caller to query the size of the object.

ViewObjectEx
Adds support for flicker-free drawing of transparent objects, hit-testing for objects with irregular shapes and setting the size of an object.

OLE container[edit]

IAdviseSink
Allows the implementer to receive notifications when the object is saved, closed, or renamed, or when its data or visual presentation changes.

IAdviseSink2
Additionally allows the implementer to receive notifications when the link source of the OLE object changes.
IAdviseSinkEx
Additionally allows the implementer to receive notifications when the view status of the OLE object changes.
IOleClientSite
This interface allows the caller to obtain information on the container and location of an object, as well requesting that the object be saved, resized, shown, hidden, et cetera.
IOleDocumentSite
Allows the caller to ask for the object on this site to be activated immediately. If this interface is implemented, IOleClientSite, IOleInPlaceSite and IAdviseSink must be implemented as well.
IOleContainer
This interface allows the caller to enumerate embedded objects in a container, or to find such objects by name. It is primarily useful if the container wishes to support links to embedded objects.
IOleWindow
IOleInPlaceUIWindow
Enables embedded objects to negotiate space for toolbars on the container’s window.

IOleInPlaceFrame
Allows the caller to ask the container to insert its menu items in an empty menu that will become the cooperative menu. Also allows the caller to ask the container to show or hide this menu, to show or hide dialog boxes, and to process accelerator keys received by the contained object intended for the container.
IOleInPlaceSite
If a container implements this interface, it allows embedded objects to be activated in place, i.e. without opening in a separate window. It provides access to the container’s IOleInPlaceUIWindow.

IOleInPlaceSiteEx
If a container implements this interface, it allows embedded objects to check whether they need to redraw on activation or deactivation. It also allows them to request their UI to activate.

IOleInPlaceSiteWindowless
If a container wishes to support windowless embedded objects, it needs to provide functionality to embedded objects to replace the functionality normally provided by an embedded object’s window. For example this interface provides a way to access the container’s window’s device context, thereby enabling the embedded object to draw in the container’s window.
IOleUILinkContainer
Contains the methods that the standard OLE dialog boxes that manage linked objects use to update linked objects in a container, or to query and change their sources. Used by the «Links», «Change source», «Update links» and «Object properties» dialog boxes.

IOleUILinkInfo
Additionally allows the dialog boxes to query when linked objects were last updated, and whether this was done automatically or manually.
IOleUIObjInfo
Contains the methods needed by the «Object properties» dialog box. For example if the user opens the «Object properties» dialog box and asks for the object to be converted to another type, a method on this interface is called.
IOleUndoManager
Provides a centralized undo service to both the container itself and to embedded objects. When an undoable action is performed, an IOleUndoUnit is created and added to the IOleUndoManager

Other[edit]

IDataAdviseHolder
The methods of IDataObject that pertain to data change notifications can be implemented by calling the methods of this interface.
Usually the stock implementation is used.
IOleAdviseHolder
The methods of IOleObject that pertain to notifications can be implemented by calling the methods of this interface.
Usually the stock implementation is used.
IDropSource
Implemented by objects that can be dragged, i.e. that can be the source of a drag-and-drop operations. When implemented it allows the object to draw drag-and-drop effects, and to specify when the object is dropped, or the drag-and-drop operation is cancelled.
IDropTarget
Implemented by objects that accept dropped objects, i.e. that can be the target of drag-and-drop operations. When implemented it allows the target to specify if a dropped object will be accepted, and what happens to an object after it is dropped.
IOleCommandTarget
Can be implemented by objects (OLE objects, OLE containers, and other objects) that wish to support certain standard commands. It allows callers to query if commands are supported, and to execute commands. Commands that an object might typically wish to implement may include things like «delete», «cut», «copy», «paste», «undo», «find», «print», «save», «zoom», and so on. Currently 58 standard commands have been defined, and they include commands commonly used by office software, web browsers and similar applications.
IOleUndoUnit
Represents an action that can be undone. It contains all information necessary to undo an action. It is created by objects and containers, so that undoable actions can be added to the container’s IOleUndoManager.

IOleParentUndoUnit
Allows an undo unit to contain other undo units. In essence this allows the undo unit to act as an undo stack, grouping undo units together. For example, if a macro is run, all undo-able actions performed by the macro may be grouped together in one undo unit.
IOleWindow
This interface represents a window of a container or contained object. It allows callers to obtain the handle of the window, and to toggle the context-sensitive help function. When the context-sensitive help function is turned on, typically the mouse-pointer changes to an arrow with a question mark to indicate that clicking a user interface element will result in opening a help window.

Competition[edit]

OpenDoc technology tried to compete with OLE. Some of Microsoft’s competitors considered OpenDoc to be more robust and easier to use; however, OpenDoc does have some known problems. OpenDoc allowed users to view and edit information across applications, directly in competition with Microsoft’s proprietary OLE standard. In 1993 some Microsoft competitors established a consortium called the Component Integration Laboratories («CIL») to develop OpenDoc as an open standard for cross-platform linking and embedding.

Microsoft required OLE compatibility as a condition of Microsoft’s certification of an application’s compatibility with Windows 95. Microsoft initially announced that applications using OpenDoc would be deemed compatible with OLE, and would receive certification for Windows 95. Microsoft later reversed the decision and said that applications using OpenDoc might not receive certification at all. Microsoft withheld specifications and debugged versions of OLE until after it had released its competing applications.

Interoperability[edit]

Use of OLE objects limits interoperability, because these objects are not widely supported in programs for viewing or editing files outside of Microsoft Windows (e.g., embedding of other files inside the file, such as tables or charts from a spreadsheet application in a text document or presentation file).[1][2][3][4] If software that understands an OLE object is not available, the object is usually replaced by a picture (bitmap representation of the object) or not displayed at all.[5][6][7]

See also[edit]

  • OLE Automation
  • OLE for process control (OPC)
  • Component Object Model (COM)
  • Distributed Component Object Model (DCOM)
  • Dynamic Data Exchange (DDE)
  • Publish and Subscribe (Mac OS)
  • Internet media type
  • Multipurpose Internet Mail Extensions (MIME)
  • Shscrap.dll (shell scrap files)

References[edit]

  1. ^ Byfield, Bruce (2005-08-23). «FOSS word processors compared: OOo Writer, AbiWord, and KWord». Linux.com. The Linux Foundation. Retrieved 2020-09-29.
  2. ^ Byfield, Bruce (2005-07-28). «Sharing files between OpenOffice.org and Microsoft Office». Linux.com. The Linux Foundation. Retrieved 2020-09-29.
  3. ^ Sharma, Mayank (2008-11-20). «SoftMaker Office 2008 focuses on compatibility with Microsoft Office». Linux.com. The Linux Foundation. Retrieved 2020-09-29.
  4. ^ Lagadec, Philippe (2006-11-30). «OpenOffice / OpenDocument and Microsoft Office 2007 / Open XML security» (PDF). PacSec 2006 Conference. Archived (PDF) from the original on 2011-07-22. Retrieved 2020-09-29.
  5. ^ Gong, Rhett (2005-09-05). «RE: OLE object — bitmap representation?». Newsgroup: microsoft.public.win32.programmer.ole. Usenet: iZFkEiesFHA.1204@TK2MSFTNGXA01.phx.gbl. Retrieved 2020-09-29.
  6. ^ O’Neill, Mike (2005-02-09). «A Rich Edit Control That Displays Bitmaps and Other OLE Objects». Code Project. Retrieved 2020-09-29.
  7. ^ «ACC: Why OLE Objects Cause Databases to Grow». Microsoft. 2007-01-19. Archived from the original on 2008-02-15.

External links[edit]

  • ripOLE — extracts attachments from OLE documents
  • OLE Background from docs.microsoft.com

OLE (Шаблон:Lang-en, произносится как oh-lay [олэй]) — технология связывания и внедрения объектов в другие документы и объекты, разработанная корпорацией Майкрософт.

В 1996 году Microsoft переименовала технологию в ActiveX.

OLE позволяет передавать часть работы от одной программы редактирования к другой и возвращать результаты назад. Например, установленная на персональном компьютере издательская система может послать некий текст на обработку в текстовый редактор, либо некоторое изображение в редактор изображений с помощью OLE-технологии.

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

OLE используется при обработке составных документов (Шаблон:Lang-en), может быть использована при передаче данных между различными несвязанными между собой системами посредством интерфейса переноса (Шаблон:Lang-en), а также при выполнении операций с буфером обмена. Идея внедрения широко используется при работе с мультимедийным содержанием на веб-страницах (пример — Веб-ТВ), где используется передача изображения, звука, видео, анимации в страницах HTML (язык гипертекстовой разметки) либо в других файлах, также использующих текстовую разметку (например, XML и SGML). Однако технология OLE использует архитектуру «толстого клиента», то есть сетевой ПК с избыточными вычислительными ресурсами. Это означает, что тип файла либо программа, которую пытаются внедрить, должна присутствовать на машине клиента. Например, если OLE оперирует таблицами Microsoft Excel, то программа Excel должна быть инсталлирована на машине пользователя.

Технология[]

OLE 1.*[]

OLE 1.0 был выпущен в 1990 году на основе технологии DDE (Dynamic Data Exchange), использовавшейся в более ранних версиях операционной системы Microsoft Windows. В то время как технология DDE была сильно ограничена в количестве и методах передачи данных между двумя работающими программами, OLE имел возможность оперировать активными соединениями между двумя документами либо даже внедрить документ одного типа в документ другого типа.

OLE-серверы и клиенты взаимодействуют с системными библиотеками при помощи таблиц виртуальных функций (Шаблон:Lang-en, VTBL). Эти таблицы содержат указатели на функции, которые системная библиотека может использовать для взаимодействия с сервером или клиентом. Библиотеки OLESRV.DLL (на сервере) и OLECLI.DLL (на клиенте) первоначально были разработаны для взаимодействия между собой с помощью сообщения WM_DDE_EXECUTE, предоставляемого операционной системой.

OLE 1.1 позднее развился в архитектуру COM (component object model) для работы с компонентами программного обеспечения. Позднее архитектура COM была преобразована и стала называться DCOM.

Когда объект OLE помещен в буфер обмена информацией, он сохраняется в оригинальных форматах Windows (таких, как bitmap или metafile), а также сохраняется в своём собственном формате. Собственный формат позволяет поддерживающей OLE-программе внедрить порцию другого документа, скопированного в буфер, и сохранить её в документе пользователя.

OLE 2.0[]

Следующим эволюционным шагом стал OLE 2.0, сохранивший те же цели и задачи, что и предыдущая версия. Но OLE 2.0 стал надстройкой над архитектурой COM вместо использования VTBL. Новыми особенностями стали автоматизация технологии drag-and-drop, in-place activation и structured storage.

ActiveX[]

Основная статья: ActiveX

В 1996 году Microsoft переименовала технологию OLE 2.0 в ActiveX. Были представлены элементы управления ActiveX, ActiveX документы и технология Active Scripting. Эта версия OLE в основном используется веб-дизайнерами для вставки в страницы мультимедийных данных.

См. также[]

  • DDE (Dynamic Data Exchange)

Ссылки[]

  • MSDN: Основы OLE
  • MSDN: OLE
  • MSDN: Введение в технологию COM
  • MSDN: COM
  • MSDN: MFC COM

Шаблон:Microsoft APIs
Шаблон:Microsoft Office

 Просмотр этого шаблона Компоненты Microsoft Windows
Основные

Aero •
ClearType •
Диспетчер рабочего стола •
DirectX •
Панель задач
(Пуск •

Область уведомлений) •
Проводник
(Пространство имён •

Специальные папки
Ассоциации файлов) •
Windows Search
(Smart folders

iFilters) •
GDI •
WIM
SMB •
.NET Framework •
XPS •
Active Scripting
(WSH •

VBScript •
JScript) •
COM
(OLE

DCOM •
ActiveX •
Структурированное хранилище
Сервер транзакций) •
Теневая копия
WDDM •
UAA
Консоль Win32

Службы
управления

Архивация и восстановление
COMMAND.COM •
cmd.exe •
Средство переноса данных •
Просмотр событий
Установщик •
netsh.exe
PowerShell •
Отчёты о проблемах
rundll32.exe •
Программа подготовки системы (Sysprep) •
Настройка системы (MSConfig) •
Проверка системных файлов
Индекс производительности •
Центр обновления •
Восстановление системы •
Дефрагментация диска
Диспетчер задач •
Диспетчер устройств •
Консоль управления •
Очистка диска •
Панель управления
(элементы)

Приложения

Контакты •
DVD Maker
Факсы и сканирование
Internet Explorer •
Журнал
Экранная лупа •
Media Center •
Проигрыватель Windows Media •
Программа совместной работы
Центр устройств Windows Mobile
Центр мобильности •
Экранный диктор
Paint •
Редактор личных символов
Удалённый помощник
Распознавание речи
WordPad •
Блокнот •
Боковая панель •
Звукозапись
Календарь
Калькулятор
Ножницы
Почта •
Таблица символов •
Исторические:
Movie Maker •

NetMeeting •
Outlook Express •
Диспетчер программ •
Диспетчер файлов •
Фотоальбом •
Windows To Go

Игры

Chess Titans •
Mahjong Titans
Purble Place •
Пасьянсы (Косынка
Паук
Солитер) •
Сапёр
Пинбол •
Червы

Ядро ОС

Ntoskrnl.exe •
Слой аппаратных абстракций (hal.dll) •
Бездействие системы •
svchost.exe •
Реестр •
Службы •
Диспетчер управления сервисами
DLL
(формат модулей) •

PE •
NTLDR •
Диспетчер загрузки
Программа входа в систему (winlogon.exe) •
Консоль восстановления
Windows RE
Windows PE •
Защита ядра от изменений

Службы

Autorun.inf •
Фоновая интеллектуальная служба передачи
Файловая система стандартного журналирования
Отчёты об ошибках
Планировщик классов мультимедиа
Теневая копия
Планировщик задач •
Беспроводная настройка

Файловые
системы

ReFS •
NTFS
(Жёсткая ссылка

Точка соединения •
Точка монтирования
Точка повторной обработки
Символьная ссылка •
TxF •
EFS) •
WinFS •
FAT •
exFAT •
CDFS •
UDF
DFS •
IFS

Сервер

Active Directory •
Службы развёртывания •
Служба репликации файлов
DNS
Домены
Перенаправление папок
Hyper-V •
IIS •
Media Services
MSMQ
Защита доступа к сети (NAP) •
Службы печати для UNIX
Удалённое разностное сжатие
Службы удаленной установки
Служба управления правами
Перемещаемые профили пользователей •
SharePoint •
Диспетчер системных ресурсов
Удаленный рабочий стол
WSUS •
Групповая политика •
Координатор распределённых транзакций

Архитектура

NT •
Диспетчер объектов
Пакеты запроса ввода/вывода
Диспетчер транзакций ядра
Диспетчер логических дисков
Диспетчер учетных записей безопасности
Защита ресурсов
lsass.exe
csrss.exe •
smss.exe •
spoolsv.exe
Запуск

Безопасность

BitLocker
Защитник •
Предотвращение выполнения данных
Обязательный контроль целостности
Защищённый канал данных
UAC •
UIPI
Брандмауэр •
Центр обеспечения безопасности •
Защита файлов

Совместимость

Подсистема UNIX (Interix) •
Виртуальная машина DOS •
Windows on Windows •
WOW64

Шаблон:Windows API

Object Linking & Embedding ( OLE ) является собственностью технологии , разработанной компанией Microsoft , которая позволяет внедрять и связывающую с документами и другими объектами. Для разработчиков он предоставил OLE Control Extension (OCX), способ разработки и использования настраиваемых элементов пользовательского интерфейса. На техническом уровне объект OLE — это любой объект, реализующий IOleObjectинтерфейс, возможно, вместе с широким спектром других интерфейсов, в зависимости от потребностей объекта.

Обзор

OLE позволяет приложению для редактирования экспортировать часть документа в другое приложение для редактирования, а затем импортировать его с дополнительным содержимым. Например, настольная издательская система может отправлять текст в текстовый процессор или изображение в редактор растровых изображений с помощью OLE. Основным преимуществом OLE является добавление в документ различных типов данных из разных приложений, таких как текстовый редактор и редактор изображений. Это создает документ в двоичном формате составного файла и главный файл, на который имеется ссылка в документе. Изменения данных в главном файле немедленно влияют на документ, который на него ссылается. Это называется «связыванием» (вместо «встраиванием»).

OLE также используется для передачи данных между различными приложениями с помощью операций перетаскивания и буфера обмена .

История

OLE 1.0

OLE 1.0, выпущенный в 1990 году, был развитием оригинальной концепции динамического обмена данными (DDE), разработанной Microsoft для более ранних версий Windows . В то время как DDE был ограничен передачей ограниченных объемов данных между двумя запущенными приложениями, OLE была способна поддерживать активные связи между двумя документами или даже встраивать один тип документа в другой.

Серверы и клиенты OLE взаимодействуют с системными библиотеками с помощью таблиц виртуальных функций или VTBL. VTBL состоит из структуры указателей функций, которые системная библиотека может использовать для связи с сервером или клиентом. Серверная и клиентская библиотеки OLESVR.DLL и OLECLI.DLL изначально были разработаны для взаимодействия между собой с помощью сообщения WM_DDE_EXECUTE .

Позднее OLE 1.0 превратилась в архитектуру для программных компонентов, известную как Component Object Model (COM), а позже — DCOM .

Когда объект OLE помещается в буфер обмена или внедряется в документ, сохраняется как визуальное представление в собственных форматах Windows (например, растровое изображение или метафайл ), так и базовые данные в собственном формате. Это позволяет приложениям отображать объект, не загружая приложение, использованное для создания объекта, а также позволяет редактировать объект, если установлено соответствующее приложение.

Объект Упаковщик , компонент OLE, доставка из Windows 3.1 до Windows XP позволяет не-OLE — объект , который будет «упакованы» , поэтому он может быть встроен в OLE клиента.

OLE 2.0

OLE 2.0 был следующим этапом эволюции OLE, преследуя многие из тех же целей, что и версия 1.0, но был повторно реализован поверх COM вместо прямого использования VTBL. Новыми функциями стали автоматизация OLE , перетаскивание , активация на месте и структурированное хранилище . Моникеры произошли от имен объектов OLE 1 и предоставили иерархическую систему именования объектов и ресурсов, аналогичную URL-адресам или URI , которые были изобретены независимо друг от друга. Теперь Windows объединила две технологии, поддерживающие тип URL Moniker и схему URL Moniker.

Пользовательские элементы управления OLE

Пользовательские элементы управления OLE были представлены в 1994 году как замена устаревшим элементам управления расширением Visual Basic . Вместо их обновления новая архитектура была основана на OLE. В частности, любой контейнер, поддерживающий OLE 2.0, уже может встраивать настраиваемые элементы управления OLE, хотя эти элементы управления не могут реагировать на события, если контейнер не поддерживает это. Пользовательские элементы управления OLE обычно поставляются в виде библиотеки динамической компоновки с расширением .ocx. В 1996 году все интерфейсы для элементов управления (кроме IUnknown) стали необязательными, чтобы уменьшить размер файлов элементов управления, чтобы они загружались быстрее; тогда они были названы элементами управления ActiveX .

Технические детали

Объекты и контейнеры OLE реализованы поверх модели компонентных объектов ; это объекты, которые могут реализовывать интерфейсы для экспорта своей функциональности. Обязательным является только интерфейс IOleObject , но могут потребоваться и другие интерфейсы, если требуются функциональные возможности, экспортируемые этими интерфейсами.

Чтобы облегчить понимание того, что следует, необходимо пояснить некоторую терминологию. Статус просмотра объекта — это то, является ли объект прозрачным, непрозрачным или непрозрачным со сплошным фоном и поддерживает ли он рисование с указанным аспектом. Место объекта — это объект, представляющий расположение объекта в его контейнере. Контейнер поддерживает объект сайта для каждого содержащегося объекта.

Далее следует список интерфейсов, сгруппированных по объектам, которые обычно должны их реализовать. Интерфейсы, обычно реализуемые объектом OLE, обычно вызываются контейнером OLE, и наоборот. Обратите внимание, что в следующем списке отступы указывают на наследование интерфейса. Все интерфейсы без отступа являются производными от IUnknown .

OLE объект

DataObject
Когда реализовано, позволяет передавать данные и уведомлять об изменениях данных. Он должен быть реализован объектами, которые должны поддерживать перетаскивание, копироваться или вставляться из буфера обмена, или быть связанными или встроенными в содержащий документ.
ObjectWithSite
Позволяет вызывающей стороне сообщить объекту OLE о своем сайте. Эта функция также предоставляется OleObject , но ObjectWithSite может использоваться, если поддерживается, если OleObject не используется для других целей .
OleCache
Позволяет кэшировать визуальные презентации из DataObject . Это позволяет встроенному объекту сохранять свое визуальное представление, что позволяет отображать его позже без необходимости запуска приложения, которое использовалось для создания объекта.
Обычно используется стоковая реализация.

OleCache2
Обеспечивает более детальный контроль над кешированием.
Обычно используется стоковая реализация.
OleCacheControl
Этот интерфейс вызывается не контейнером, а внутренне объектом, чтобы позволить ему получать уведомления о том, когда его DataObject запущен, тем самым позволяя ему подписаться на уведомления об изменении данных этого объекта и, таким образом, позволяя ему правильно обновлять кешированную презентацию. .
Обычно используется стоковая реализация.
OleDocument
Позволяет объекту OLE поддерживать несколько представлений своих данных, а также несколько связанных функций.
OleDocumentView
Объект документа (объект, реализующий OleDocument ) реализует этот интерфейс для каждого представления. Он позволяет вызывающему абоненту установить местоположение объекта, запросить и установить размер объекта, а также показать и активировать его, а также некоторые связанные функции.
OleWindow
OleInPlaceActiveObject
Вызывается самым внешним контейнером объекта для взаимодействия с ним, пока он активен, например, для обработки клавиш-ускорителей в очереди сообщений контейнера, которые предназначены для содержащегося в нем объекта.
OleInPlaceObject
Вызывается контейнером для активации или деактивации объекта.

IOleInPlaceObjectWindowless
Объект без окон — это объект, который не имеет собственного окна, но вместо этого отображается в окне своего контейнера. Он используется контейнером для ретрансляции сообщений, полученных окном контейнера, которые предназначены для содержащегося в нем объекта. Например, если мышь перемещается по окну, Windows помещает сообщение о перемещении мыши вместе с координатами мыши в очередь сообщений окна. Если это окно содержит внедренные объекты без окон, сообщение может быть передано такому объекту, если координаты указателя мыши находятся над этим объектом. По тем же причинам этот интерфейс также предоставляет доступ к интерфейсу DropTarget объекта .
OleLink
Позволяет объекту поддерживать связывание, например, позволяя контейнеру устанавливать источник связанного объекта.
Обычно используется стоковая реализация.
OleObject
Возможно, самый важный интерфейс для объекта OLE. Например, он позволяет контейнеру информировать объект о своем сайте, инициализировать объект на основе данных, открывать и закрывать его, запрашивать и устанавливать размер объекта, запрашивать уведомления в AdviseSink контейнера и выполнять определенные объекты. как «глаголы» по объекту. Эти глаголы часто включают «Открыть» или «Редактировать», но могут также включать и другие глаголы. Один из глаголов определяется как главный глагол, и он выполняется, когда пользователь дважды щелкает объект.
ViewObject
Позволяет объекту рисовать себя напрямую, не передавая DataObject в контейнер. Для объектов, которые поддерживают как DataObject, так и этот интерфейс, обычно используется общая реализация базовой реализации.

ViewObject2
Дополнительно позволяет вызывающей стороне запрашивать размер объекта.

ViewObjectEx
Добавлена ​​поддержка рисования прозрачных объектов без мерцания, проверки попадания для объектов неправильной формы и установки размера объекта.

Контейнер OLE

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

IAdviseSink2
Кроме того, позволяет разработчику получать уведомления при изменении источника ссылки объекта OLE.
IAdviseSinkEx
Кроме того, позволяет разработчику получать уведомления при изменении состояния просмотра объекта OLE.
IOleClientSite
Этот интерфейс позволяет вызывающему абоненту получать информацию о контейнере и местонахождении объекта, а также запрашивать сохранение, изменение размера, отображение, скрытие объекта и т. Д.
IOleDocumentSite
Позволяет вызывающему абоненту запросить немедленную активацию объекта на этом сайте. Если этот интерфейс реализован, также должны быть реализованы IOleClientSite , IOleInPlaceSite и IAdviseSink .
ИОлеКонтейнер
Этот интерфейс позволяет вызывающей стороне перечислять встроенные объекты в контейнере или находить такие объекты по имени. Это в первую очередь полезно, если контейнер желает поддерживать ссылки на встроенные объекты.
IOleWindow
IOleInPlaceUIWindow
Позволяет встроенным объектам согласовывать пространство для панелей инструментов в окне контейнера.

IOleInPlaceFrame
Позволяет вызывающей стороне попросить контейнер вставить свои пункты меню в пустое меню, которое станет совместным меню. Также позволяет вызывающей стороне запросить контейнер показать или скрыть это меню, показать или скрыть диалоговые окна и обработать клавиши-ускорители, полученные содержащимся объектом, предназначенным для контейнера.
IOleInPlaceSite
Если контейнер реализует этот интерфейс, он позволяет активировать встроенные объекты на месте, то есть без открытия в отдельном окне. Он обеспечивает доступ к IOleInPlaceUIWindow контейнера .

IOleInPlaceSiteEx
Если контейнер реализует этот интерфейс, он позволяет встроенным объектам проверять, нужно ли их перерисовывать при активации или деактивации. Это также позволяет им запрашивать активацию пользовательского интерфейса.

IOleInPlaceSiteБез окон
Если контейнер желает поддерживать внедренные объекты без окон, он должен предоставить функциональность внедренным объектам, чтобы заменить функциональность, обычно обеспечиваемую окном внедренного объекта. Например, этот интерфейс обеспечивает способ доступа к контексту устройства окна контейнера, тем самым позволяя встроенному объекту рисовать в окне контейнера.
IOleUILinkContainer
Содержит методы, которые стандартные диалоговые окна OLE, управляющие связанными объектами, используют для обновления связанных объектов в контейнере или для запроса и изменения их источников. Используется диалоговыми окнами «Ссылки», «Изменить источник», «Обновить ссылки» и «Свойства объекта».

IOleUILinkInfo
Кроме того, позволяет диалоговым окнам запрашивать, когда в последний раз обновлялись связанные объекты, и было ли это сделано автоматически или вручную.
IOleUIObjInfo
Содержит методы, необходимые для диалогового окна «Свойства объекта». Например, если пользователь открывает диалоговое окно «Свойства объекта» и запрашивает преобразование объекта в другой тип, вызывается метод этого интерфейса.
IOleUndoManager
Предоставляет централизованную службу отмены как для самого контейнера, так и для встроенных объектов. Когда выполняется отменяемое действие, создается IOleUndoUnit и добавляется в IOleUndoManager.

Другое

IDataAdviseHolder
Методы IDataObject , относящиеся к уведомлениям об изменении данных, могут быть реализованы путем вызова методов этого интерфейса.
Обычно используется стоковая реализация.
IOleAdviseHolder
Методы IOleObject , относящиеся к уведомлениям, могут быть реализованы путем вызова методов этого интерфейса.
Обычно используется стоковая реализация.
IDropSource
Реализуется объектами, которые можно перетаскивать, т.е. которые могут быть источником операций перетаскивания. Когда он реализован, он позволяет объекту рисовать эффекты перетаскивания и указывать, когда объект отбрасывается, или операция перетаскивания отменяется.
IDropTarget
Реализуется объектами, которые принимают отброшенные объекты, т. Е. Могут быть целью операций перетаскивания. Когда он реализован, он позволяет цели указать, будет ли принят отброшенный объект, и что произойдет с объектом после того, как он будет отброшен.
IOleCommandTarget
Может быть реализовано объектами (объектами OLE, контейнерами OLE и другими объектами), которые хотят поддерживать определенные стандартные команды. Он позволяет вызывающим абонентам запрашивать, поддерживаются ли команды, и выполнять команды. Команды, которые объект обычно может захотеть реализовать, могут включать такие вещи, как «удалить», «вырезать», «скопировать», «вставить», «отменить», «найти», «напечатать», «сохранить», «увеличить» и скоро. В настоящее время определены 58 стандартных команд, включая команды, обычно используемые офисным программным обеспечением, веб-браузерами и аналогичными приложениями.
IOleUndoUnit
Представляет действие, которое можно отменить. Он содержит всю информацию, необходимую для отмены действия. Он создается объектами и контейнерами, поэтому отменяемые действия могут быть добавлены в IOleUndoManager контейнера .

IOleParentUndoUnit
Позволяет юниту отмены содержать другие юниты отмены. По сути, это позволяет юниту отмены действовать как стек отмены, группируя юниты отмены вместе. Например, если макрос запущен, все действия, которые можно отменить, выполняемые макросом, могут быть сгруппированы вместе в один блок отмены.
IOleWindow
Этот интерфейс представляет собой окно контейнера или содержащегося объекта. Это позволяет вызывающим абонентам получать дескриптор окна и переключать функцию контекстно-зависимой справки. Когда функция контекстно-зависимой справки включена, указатель мыши обычно изменяется на стрелку со знаком вопроса, чтобы указать, что щелчок по элементу пользовательского интерфейса приведет к открытию окна справки.

Конкурс

Технология OpenDoc пыталась составить конкуренцию OLE. Некоторые конкуренты Microsoft считали OpenDoc более надежным и простым в использовании; однако у OpenDoc есть некоторые известные проблемы . OpenDoc позволял пользователям просматривать и редактировать информацию в приложениях, прямо конкурируя с проприетарным стандартом OLE от Microsoft. В 1993 году некоторые конкуренты Microsoft учредили консорциум под названием Component Integration Laboratories (CIL) для разработки OpenDoc в качестве открытого стандарта для межплатформенного связывания и встраивания.

Microsoft требовала совместимости с OLE в качестве условия сертификации Microsoft совместимости приложения с Windows 95 . Изначально Microsoft объявила, что приложения, использующие OpenDoc, будут считаться совместимыми с OLE и получат сертификацию для Windows 95. Позже Microsoft отменила это решение и заявила, что приложения, использующие OpenDoc, могут вообще не проходить сертификацию. Microsoft не раскрывала спецификации и отлаженные версии OLE до тех пор, пока не выпустила свои конкурирующие приложения.

Совместимость

Использование объектов OLE ограничивает взаимодействие, поскольку эти объекты не широко поддерживаются в программах для просмотра или редактирования файлов вне Microsoft Windows (например, встраивание других файлов в файл, таких как таблицы или диаграммы из приложения электронных таблиц в текстовый документ или файл презентации). [1] [2] [3] [4] Если программное обеспечение, которое понимает объект OLE, недоступно, объект обычно заменяется изображением (растровое представление объекта) или не отображается вообще. [5] [6] [7]

См. Также

  • OLE автоматизация
  • OLE для управления процессами (OPC)
  • Компонентно-объектная модель (COM)
  • Распределенная объектная модель компонентов (DCOM)
  • Динамический обмен данными (DDE)
  • Тип интернет-СМИ
  • Многоцелевые расширения почты Интернета (MIME)
  • Shscrap.dll (файлы отходов оболочки)

Ссылки

  1. ^ Byfield, Брюс (2005-08-23). «Сравнение текстовых процессоров FOSS: OOo Writer, AbiWord и KWord» . Linux.com . Фонд Linux . Проверено 29 сентября 2020 .
  2. ^ Byfield, Брюс (2005-07-28). «Обмен файлами между OpenOffice.org и Microsoft Office» . Linux.com . Фонд Linux . Проверено 29 сентября 2020 .
  3. ^ Шарма, Mayank (2008-11-20). «SoftMaker Office 2008 ориентирован на совместимость с Microsoft Office» . Linux.com . Фонд Linux . Проверено 29 сентября 2020 .
  4. ^ Lagadec, Филипп (2006-11-30). «Безопасность OpenOffice / OpenDocument и Microsoft Office 2007 / Open XML» (PDF) . Конференция PacSec 2006 . Проверено 29 сентября 2020 .
  5. ^ Гонг, Ретт (2005-09-05). «RE: OLE-объект — растровое представление?» . Группа новостейmicrosoft.public.win32.programmer.ole . Usenet: [email protected] . Проверено 29 сентября 2020 . 
  6. ^ О’Нил, Майк (2005-02-09). «Богатый элемент управления редактирования, отображающий растровые изображения и другие объекты OLE» . Код проекта . Проверено 29 сентября 2020 .
  7. ^ «ACC: Почему объекты OLE вызывают рост баз данных» . Microsoft . 2007-01-19. Архивировано из оригинала на 2008-02-15.

Внешние ссылки

  • ripOLE — извлекает вложения из OLE-документов
  • Фон OLE с сайта docs.microsoft.com

OLE (англ. Object Linking and Embedding, произносится как oh-lay [олэй]) — технология связывания и внедрения объектов в другие документы и объекты, разработанная корпорацией Майкрософт.

В 1996 году Microsoft переименовала технологию в ActiveX.

OLE позволяет передавать часть работы от одной программы редактирования к другой и возвращать результаты назад. Например, установленная на персональном компьютере издательская система может послать некий текст на обработку в текстовый редактор, либо некоторое изображение в редактор изображений с помощью OLE-технологии.

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

OLE используется при обработке составных документов (англ. compound documents), может быть использована при передаче данных между различными несвязанными между собой системами посредством интерфейса переноса (англ. drag-and-drop), а также при выполнении операций с буфером обмена. Идея внедрения широко используется при работе с мультимедийным содержанием на веб-страницах (пример — Веб-ТВ), где используется передача изображения, звука, видео, анимации в страницах HTML (язык гипертекстовой разметки) либо в других файлах, также использующих текстовую разметку (например, XML и SGML). Однако, технология OLE использует архитектуру «толстого клиента», то есть сетевой ПК с избыточными вычислительными ресурсами. Это означает, что тип файла либо программа, которую пытаются внедрить, должна присутствовать на машине клиента. Например, если OLE оперирует таблицами Microsoft Excel, то программа Excel должна быть инсталлирована на машине пользователя.

Содержание

  • 1 Технология
    • 1.1 OLE 1.*
    • 1.2 OLE 2.0
    • 1.3 ActiveX
  • 2 См. также
  • 3 Ссылки

Технология

OLE 1.*

OLE 1.0 был выпущен в 1990 году на основе технологии DDE (Dynamic Data Exchange), использовавшейся в более ранних версиях операционной системы Microsoft Windows. В то время как технология DDE была сильно ограничена в количестве и методах передачи данных между двумя работающими программами, OLE имел возможность оперировать активными соединениями между двумя документами либо даже внедрить документ одного типа в документ другого типа.

OLE сервера и клиенты взаимодействуют с системными библиотеками при помощи таблиц виртуальных функций (англ. virtual function tables, VTBL). Эти таблицы содержат указатели на функции, которые системная библиотека может использовать для взаимодействия с сервером или клиентом. Библиотеки OLESRV.DLL (на сервере) и OLECLI.DLL (на клиенте) первоначально были разработаны для взаимодействия между собой с помощью сообщения WM_DDE_EXECUTE, предоставляемого операционной системой.

OLE 1.1 позднее развился в архитектуру COM (component object model) для работы с компонентами программного обеспечения. Позднее архитектура COM была преобразована и стала называться DCOM.

Когда объект OLE помещен в буфер обмена информацией, он сохраняется в оригинальных форматах Windows (таких как bitmap или metafile), а также сохраняется в своём собственном формате. Собственный формат позволяет поддерживающей OLE программе внедрить порцию другого документа, скопированного в буфер, и сохранить её в документе пользователя.

OLE 2.0

Следующим эволюционным шагом стал OLE 2.0, сохранивший те же цели и задачи, что и предыдущая версия. Но OLE 2.0 стал надстройкой над архитектурой COM вместо использования VTBL. Новыми особенностями стали автоматизация технологии drag-and-drop, in-place activation и structured storage.

ActiveX

В 1996 году Microsoft переименовала технологию OLE 2.0 в ActiveX. Были представлены элементы управления ActiveX, ActiveX документы и технология Active Scripting. Эта версия OLE в основном используется веб-дизайнерами для вставки в страницы мультимедийных данных.

См. также

  • DDE (Dynamic Data Exchange)

Ссылки

  • MSDN: Основы OLE
  • MSDN: OLE
  • MSDN: Введение в технологию COM
  • MSDN: COM
  • MSDN: MFC COM
 Просмотр этого шаблона API и фреймворки Microsoft
Графика Desktop Window Manager · Direct2D · Direct3D (extensions)  · GDI / GDI+ · WPF · Windows Color System · Windows Image Acquisition · Windows Imaging Component
Аудио DirectMusic · DirectSound · DirectX plugin · XACT · Speech API  · XAudio2
Мультимедиа DirectX (Media Objects · Video Acceleration) · DirectInput · DirectShow · Image Mastering API · Managed DirectX · Media Foundation · XNA · Windows Media  · Video for Windows
Web MSHTML · RSS Platform · JScript · VBScript · BHO · XDR · SideBar Gadgets
Доступ к данным Data Access Components · Extensible Storage Engine · ADO.NET · ADO.NET Entity Framework · Sync Framework · Jet Engine · MSXML · OLE DB · OPC
Сеть Winsock (LSP) · Winsock Kernel · Filtering Platform · Network Driver Interface Specification · Windows Rally · BITS · P2P API · MSMQ · MS MPI · DirectPlay
Коммуникации Messaging API · Telephony API · WCF

Администрирование и
управление

Win32 console · Windows Script Host · WMI (extensions) · PowerShell · Task Scheduler · Offline Files · Shadow Copy · Windows Installer · Error Reporting · Event Log · Common Log File System
Компонентная модель COM · COM+ · ActiveX · Distributed Component Object Model · .NET Framework
Библиотеки Base Class Library (BCL) · Microsoft Foundation Classes (MFC) · Active Template Library (ATL) · Windows Template Library (WTL)
Драйверы устройств Windows Driver Model  · Windows Driver Foundation (KMDF · UMDF) · WDDM · NDIS · UAA · Broadcast Driver Architecture  · VxD
Безопасность Crypto API (CAPICOM) · Windows CardSpace · Data Protection API · Security Support Provider Interface (SSPI)
.NET ASP.NET · ADO.NET · Base Class Library (BCL) · Remoting · Silverlight · TPL · WCF · WCS · WPF · WF
Программное обеспечение EFx Factory · Enterprise Library · Composite UI · CCF · CSF
IPC MSRPC · Dynamic Data Exchange (DDE)  · Remoting · WCF
Доступность Active Accessibility · UI Automation

Текст и многоязная
поддержка

DirectWrite · Text Services Framework · Text Object Model · Input method editor · Language Interface Pack · Multilingual User Interface · Uniscribe
 Просмотр этого шаблона Microsoft Office
Клиентские приложения Accounting · Access · Lync · Entourage · Excel · Groove · InfoPath · InterConnect · MapPoint · OneNote · Outlook · PowerPoint · Project · Publisher · SharePoint Designer · Visio · Word Microsoft Office 2013 symbol.svg
Серверные приложения Communications · Forms · Groove · PerformancePoint · Project · Project Portfolio · SharePoint
Устаревшие приложения Binder · Data Analyzer · FrontPage · Liquid Motion · Mail · Office Assistants · PhotoDraw · Photo Editor · Schedule+ · Vizact · Web Components
Онлайн-службы Office Online · Office 365 · Office Live Meeting · SkyDrive
Версии для Windows 3.0 · 4.0 · 4.3 · 95 · 97 · 2000 · XP · 2003 · 2007 · 2010 · 2013
Версии для Mac OS 98 · 2001 · X · 2004 · 2008 · 2011
Технологии Object Linking and Embedding · Office Open XML · Visual Studio Tools for Office · Visual Basic for Applications
Категория
 Просмотр этого шаблона Компоненты Microsoft Windows
Основные

Aero • ClearType • Диспетчер рабочего стола • DirectX • Панель задач (Пуск • Область уведомлений) • Проводник (Пространство имён • Специальные папки • Ассоциации файлов) • Windows Search (Smart folders • iFilters) • GDI • WIM • SMB • .NET Framework • XPS • Active Scripting (WSH • VBScript • JScript) • COM (OLE DCOM • ActiveX • Структурированное хранилище • Сервер транзакций) • Теневая копия • WDDM • UAA • Консоль Win32

Службы
управления

Архивация и восстановление • COMMAND.COM • cmd.exe • Средство переноса данных • Просмотр событий • Установщик • netsh.exe • PowerShell • Отчёты о проблемах • rundll32.exe • Программа подготовки системы (Sysprep) • Настройка системы (MSConfig) • Проверка системных файлов • Индекс производительности • Центр обновления • Восстановление системы • Дефрагментация диска • Диспетчер задач • Диспетчер устройств • Консоль управления • Очистка диска • Панель управления (элементы)

Приложения

Контакты • DVD Maker • Факсы и сканирование • Internet Explorer • Журнал • Экранная лупа • Media Center • Проигрыватель Windows Media • Программа совместной работы • Центр устройств Windows Mobile • Центр мобильности • Экранный диктор • Paint • Редактор личных символов • Удалённый помощник • Распознавание речи • WordPad • Блокнот • Боковая панель • Звукозапись • Календарь • Калькулятор • Ножницы • Почта • Таблица символов • Исторические: Movie Maker • NetMeeting • Outlook Express • Диспетчер программ • Диспетчер файлов • Фотоальбом

Игры

Chess Titans • Mahjong Titans • Purble Place • Пасьянсы (Косынка • Паук • Солитер) • Сапёр • Пинбол • Червы

Ядро ОС

Ntoskrnl.exe • Слой аппаратных абстракций (hal.dll) • Бездействие системы • svchost.exe • Реестр • Службы • Диспетчер управления сервисами • DLL (формат модулей) • PE • NTLDR • Диспетчер загрузки • Программа входа в систему (winlogon.exe) • Консоль восстановления • Windows RE • Windows PE • Защита ядра от изменений

Службы

Autorun.inf • Фоновая интеллектуальная служба передачи • Файловая система стандартного журналирования • Отчёты об ошибках • Планировщик классов мультимедиа • Теневая копия • Планировщик задач • Беспроводная настройка

Файловые
системы

Protogon • NTFS (Жёсткая ссылка • Точка соединения • Точка монтирования • Точка повторной обработки • Символьная ссылка • TxF • EFS) • WinFS • FAT • exFAT • CDFS • UDF • DFS • IFS

Сервер

Active Directory • Службы развёртывания • Служба репликации файлов • DNS • Домены • Перенаправление папок • Hyper-V • IIS • Media Services • MSMQ • Защита доступа к сети (NAP) • Службы печати для UNIX • Удалённое разностное сжатие • Службы удаленной установки • Служба управления правами • Перемещаемые профили пользователей • SharePoint • Диспетчер системных ресурсов • Удаленный рабочий стол • WSUS • Групповая политика • Координатор распределённых транзакций

Архитектура

NT • Диспетчер объектов • Пакеты запроса ввода/вывода • Диспетчер транзакций ядра • Диспетчер логических дисков • Диспетчер учетных записей безопасности • Защита ресурсов • lsass.exe • csrss.exe • smss.exe • spoolsv.exe • Запуск

Безопасность

BitLocker • Защитник • Предотвращение выполнения данных • Обязательный контроль целостности • Защищенный канал данных • UAC • UIPI • Брандмауэр • Центр обеспечения безопасности • Защита файлов

Совместимость

Подсистема UNIX (Interix) • Виртуальная машина DOS • Windows on Windows • WOW64

 Просмотр этого шаблона Программные интерфейсы и фреймворки Microsoft Windows
Графика Проводник Windows • DirectX • Direct3D • GDI • Windows Presentation Foundation • Windows Color System • Windows Image Acquisition • Windows Imaging Component
Звук DirectSound • DirectMusic • XACT • Speech API • MME
Мультимедиа DirectShow • Windows Media • Media Foundation
Веб MSHTML • MSXML • Платформа RSS для Windows • JScript • ActiveX • XMLHttpRequest • Гаджеты
Доступ к данным Компоненты Microsoft Data Access • Extensible Storage Engine • ADO.NET • Sync Framework • Jet-механизм
Сети Winsock (LSP) • Filtering Platform • NDIS • Windows Rally • Сервис фоновой интеллектуальой передачи данных • P2P API
Коммуникации TAPI
Администрирование Консоль Win32 • Windows Script Host • Инструментарий управления Windows • PowerShell • Планировщик задач • Offline Files • Теневое копирование • Windows Installer • Диспетчер ошибок Windows • Журнал событий Windows
Модель компонентов COM • COM+ • DCOM • .NET Framework
Библиотеки Microsoft Foundation Classes (MFC) • Active Template Library (ATL) • Windows Template Library (WTL) • Base Class Library (BCL)
Разработка драйверов Windows Driver Model • Windows Driver Foundation (KMDF • UMDF)
Безопасность CryptoAPI (CAPICOM) • Windows CardSpace • Data protection API • Security Support Provider Interface
.NET .NET Framework • ASP.NET • ADO.NET • .NET Remoting • Windows Presentation Foundation • Windows Workflow Foundation • Windows Communication Foundation • Windows CardSpace • XNA Framework • Silverlight • Библиотека параллельного программирования
Межпроцессное
взаимодействие
Dynamic Data Exchange (DDE)  • MSRPC • Именованные каналы
Текст и
поддержка языков
Framework Текстовых сервисов • Объектная модель текстов • Редактор метода ввода • Языковые пакеты • Многоязычный интерфейс
Игры XNA Framework • DirectX

Back

December 31st, 2013

Object Linking and Embedding (OLE) is a Microsoft Windows feature that allows you to copy or move information from one application to another while you retain the ability to edit the information in the original application.  Basically, OLE combines data from different applications into one document.  For example, you can create an AutoCAD® Architecture drawing that contains all or part of a Microsoft Excel spreadsheet.

OLE is a great way to use information from one application in another application, which can be useful for presentations and more. To use OLE, you need both source and destination applications that support OLE.  Information from one document can be inserted into another document by either linking or embedding the information.  Both linked and embedded OLE objects can be edited from within the destination application.  However, linking and embedding store information differently so it is important to ensure that you are using the correct option for the situation.  The relationship between embedding and linking is similar to that between inserting a block and creating an external reference.  Let’s look further into using OLE objects with AutoCAD Architecture.  We will use Microsoft Excel as an example.

Importing OLE Objects

You can use one of the following methods to insert information from Excel as an OLE object:

  • Cut or copy information from an existing Excel file and then paste it into the ACA drawing.
  • Import an existing Excel file.
  • Open Excel from within the ACA drawing by double-clicking on it and create the information that you want to use. 

When the Excel information is inserted into your ACA drawing, you will need to specify an insertion point.  By default, the OLE object is displayed with a frame that is not plotted.  OLE objects are opaque and they will plot as opaque.  This means that they hide objects in back of them.  OLE objects are supportive of draw order.  The display of OLE objects can be controlled in one of two ways:

  • Set the OLEHIDE system variable to either display or suppress the display of all OLE objects within paper space, model space, or both.
  • Freeze or turn off a layer to suppress the display of OLE objects on that layer.

When OLE objects with text are printed, the text size is approximated by the text size in the source application, Excel.  It is important to note that OLE objects in ACA drawings are not displayed or plotted in external references or block references.

Embedding OLE Objects

An embedded OLE object is simply a copy of information from another document—for example, a copy of an Excel spreadsheet in AutoCAD Architecture.  When you embed objects, any changes made to the source document are not reflected in destination documents because there is no link to the source document.  You should embed objects only if you want to be able to use the application that created them for editing but you do not want the OLE object to be updated when you edit information in the source document.

To embed an OLE object in a drawing, open the document you wish to embed, select, right-click and copy the information.  Next open your ACA drawing, right-click and paste the information.  Another way to do this is to open AutoCAD Architecture, go to the Insert tab on the ribbon, Data panel, OLE Object (see Figure 1).  This will bring up the Insert Object dialog box.  Next select Create New.  Under Object Type, select an application and click OK (see Figure 2).  This will open Excel (or whichever application you choose).  Now create the information you wish to insert and save the document.  In Excel’s File menu, select Exit and Return.  Close Excel and the object is now embedded in the AutoCAD Architecture drawing.

If needed, you can adjust the text size.  To do this, select the OLE object, right-click, select OLE, and then select Text Size.  This opens the OLE Text Size dialog box.  Now you can select a font, point size, and text height.  When finished, click OK.

Figure 1: OLE Object tool

Figure 2: Create New

Linking OLE Objects

A linked OLE object is simply a reference to information that is located in another document.  Link objects when you want to use the same information in more than one document.  If you change the original information, you only need to update the links in order to update the document that contains the OLE objects.  Links can be set to update automatically.  It is important to note that when you link a drawing you need to maintain access to both the source application and the linked document.  If you rename or move either of them, you may need to reestablish the link.

To link a file as an OLE object, go to the Insert tab of the ribbon in AutoCAD Architecture, Data panel, OLE Object.  This will bring up the Insert Object dialog box.  Select Create From File (see Figure 3).  Next browse and find the file you wish to use.  Click Link and then select OK.  Now you will need to select where you want the OLE object to appear.

To link part of a file as an OLE object in a drawing, begin by opening ACA and Excel.  Select the information in Excel you want to link and copy it to the Clipboard.  In ACA, click the Home tab on the ribbon, Clipboard panel, Paste drop-down, and then Paste Special.  In the Paste Special dialog box, click Paste Link.  Paste Link pastes the contents of the Clipboard into the current drawing and also creates a link to the file in the source application. If you click Paste, the Clipboard contents are embedded instead of linked so it is important to select Paste Special.  In the As box, select the data format you want to use and click OK.

Figure 3 – Create from File

Exporting OLE Objects

You can link or embed a view of an AutoCAD Architecture drawing within another application that supports OLE such as Excel.  The COPYLINK command copies the view in the current ACA viewport to the clipboard and you can then paste the view into the destination document.  If you paste an unnamed view into a document, it is assigned a view name such as OLE1.  Then if you exit the drawing, you will be prompted to save your changes to the newly named view.  In order to establish the link and save the view name, OLE1, you must save the drawing.

You can select objects and embed them in documents created by other applications.  Embedding will place a copy of the selected objects within the destination document.  If you use AutoCAD Architecture to edit the OLE object from within the destination document, the object is not updated in the original drawing.

To embed objects in another document, begin by opening AutoCAD Architecture and selecting the objects you wish to embed, right-click, and select Copy.  The selected objects are now copied to the clipboard.  Open Excel and open a new or existing document.  Paste the clipboard contents onto the spreadsheet following the instructions for embedding the clipboard contents given by Excel.

To link a view to another document, begin by opening AutoCAD Architecture and save the drawing that you want to link so it has a drawing name.  If multiple viewports are displayed, you will need to select a viewport.  Next, enter COPYLINK at the command prompt.  Then open a new or existing document in Excel.  Paste the clipboard contents into the document, following Excel’s procedures for inserting linked data (see Figure 4). The inserted OLE object is displayed in the document and can be edited from AutoCAD Architecture through Excel.

Figure 4: Copylink drawing In Excel

Editing OLE Objects

Linked or embedded OLE objects can be edited in a drawing by double-clicking the object to open the source application.  You can use any selection method to select OLE objects and then you can use most editing commands, the Properties palette, or grips to make changes.  When grips are used to change the size of an OLE object, the shape of the object does not change as long as the aspect ratio is locked in the Properties palette.  If you have resized an OLE object and wish to restore it to its original size, select the OLE object, right-click, and select OLE Reset.  It is important to note that the following editing commands are not available for OLE objects:  BREAK, CHAMFER, FILLET, and LENGTHEN.

Before looking at how to edit OLE objects, it is important to understand the difference between editing a linked object versus an embedded object.  The document that contains a linked drawing stores the drawing’s file location.  You can edit a linked drawing either from the destination application or in the source program.  The program must be loaded or accessible on the system along with the document you are editing.   An ACA drawing that is embedded within a document can be edited only from within the destination application.  You will need to double-click the OLE object to start the program.  Editing the original drawing in the program has no effect on documents in which that drawing is embedded.

To edit a linked ACA drawing from within the destination application, begin by opening the document that contains the linked drawing (for example, a Microsoft Excel file).  Double-click the linked drawing and the drawing will open.  You can also select the OLE object, right-click and select AutoCAD Drawing Object, and then Edit (see Figure 5).  Next modify the drawing as necessary and click File menu and select Save when done.  To return to Excel, click the File menu and hit Exit.  The drawing is now changed in all documents that have links to it.

To edit a linked drawing in the source application, begin by starting the program and opening the linked drawing.  Make modifications to the drawing and view as necessary.  Save the changes when finished.  Update the link in the destination document if necessary.  The drawing is changed in all documents that have links to it.

To edit embedded objects, begin by opening the Excel document that contains the embedded AutoCAD Architecture objects.  Double-click the embedded objects to start the ACA program and display the objects and modify them as necessary.  Save changes to the embedded objects by clicking the File menu and selecting Update.  Now return to the destination application by clicking the File menu and selecting Exit.

To control the display of OLE objects in AutoCAD Architecture, enter the command OLEHIDE.  Now enter one of the following values:

  • 0 – Displays OLE objects in both paper space and model space
  • 1 – Displays OLE objects in paper space only
  • 2 – Displays OLE objects in model space only
  • 3 – Does not display OLE objects

You can also control the display of the OLE frame within a drawing.  To do this, enter OLEFRAME at the command prompt, then enter one of the following values:

  • 0 – Frame is not displayed and is not plotted
  • 1 – Frame is displayed and is plotted
  • 2 – Frame is displayed but is not plotted

Figure 5: Edit OLE object

Controlling Plot Quality

When a raster plotter is used, OLE objects are treated as raster objects.  Since large, high-resolution, color-rich rasters can be expensive to plot, the OLEQUALITY system variable can be set to control how each OLE object is plotted. The default setting is Automatically Select and it assigns a plot quality level based on the type of object.  The higher the plot quality setting, the more time and memory are used to plot.

The Plotter Configuration Editor can also be used to adjust OLE plot quality.  The Graphics option displays a Raster Graphics dialog box with a slider that controls OLE plot quality.  It is important to note that nested OLE objects may cause problems.  For example, an OLE object that is not in the current view plane is not plotted, but the frame is plotted based on the setting of the OLEFRAME system variable.

To set the plot quality for OLE objects, begin by clicking the Tools menu and selecting Options.  In the Options dialog box, select the Plot and Publish tab and then in the OLE Plot Quality list, select one of the following settings (see Figure 6).

  • Monochrome – For text spreadsheets
  • Low Graphics – For color text and pie charts
  • High Graphics – For photographs
  • Automatically Select – Plot-quality setting assigned based on the type of file

Click Apply to continue setting options or click OK to close the dialog box if you are finished.

Figure 6: OLE Plot Quality

Conclusion

OLE is an awesome feature that allows an editor to basically loan out part of a document to another editor and then re-import it. The main benefit of using OLE is to display visualizations of data from other programs that the host program is normally unable to generate itself, as well as to create a master file.  There are many beneficial uses for OLE within AutoCAD Architecture and I encourage you to try this feature out and see how it best works for you.

Back

Технология, разработанная Microsoft

Связывание и внедрение объектов (OLE ) — это собственная технология, разработанная Microsoft, которая позволяет встраивать и связывать с документами и другими объектами. Для разработчиков он предоставил OLE Control Extension (OCX), способ разработки и использования настраиваемых элементов пользовательского интерфейса. На техническом уровне объект OLE — это любой объект, реализующий интерфейс IOleObject, возможно, вместе с широким спектром других интерфейсов, в зависимости от потребностей объекта.

Содержание

  • 1 Обзор
  • 2 История
    • 2.1 OLE 1.0
    • 2.2 OLE 2.0
    • 2.3 Пользовательские элементы управления OLE
  • 3 Технические детали
    • 3.1 Объект OLE
    • 3.2 OLE контейнер
    • 3.3 Другое
  • 4 Конкурс
  • 5 Взаимодействие
  • 6 См. также
  • 7 Ссылки
  • 8 Внешние ссылки

Обзор

OLE позволяет редактировать приложение для экспорта часть документа в другое приложение для редактирования , а затем импортировать ее с дополнительным содержимым. Например, система настольных издательских систем может отправить текст в текстовый процессор или изображение в OLE. Основным преимуществом OLE является добавление в документ различных типов данных из разных приложений, таких как текстовый редактор и редактор изображений. Это создает документ составного файла в двоичном формате и главный файл, на который имеется ссылка в документе. Изменения данных в главном файле немедленно влияют на документ, который на него ссылается. Это называется «связывание» (вместо «встраивания»).

OLE также используется для передачи данных между различными приложениями с помощью операций перетаскивания и буфера обмена.

История

OLE 1.0

OLE 1.0, выпущенная в 1990 году, была развитием исходной концепции динамического обмена данными (DDE), которая Microsoft разработан для более ранних версий Windows. В то время как DDE был ограничен передачей ограниченных объемов данных между двумя запущенными приложениями, OLE могла поддерживать активные связи между двумя документами или даже встраивать один тип документа в другой.

Серверы и клиенты OLE взаимодействуют с системными библиотеками с помощью таблиц виртуальных функций или VTBL. VTBL состоит из структуры указателей функций, которые системная библиотека может использовать для связи с сервером или клиентом. Серверная и клиентская библиотеки, OLESVR.DLLи OLECLI.DLL, изначально были разработаны для связи между собой с помощью сообщения WM_DDE_EXECUTE.

OLE 1.0 позже превратился в архитектуру для программных компонентов, известную как Component Object Model (COM), а позже DCOM.

Когда Объект OLE помещается в буфер обмена или внедряется в документ, сохраняется как визуальное представление в собственных форматах Windows (например, bitmap или метафайл ), так и лежащие в основе данные в собственном формате. Это позволяет приложениям отображать объект без загрузки приложения, использованного для создания объекта, а также позволяет редактировать объект, если соответствующее приложение установлено.

Object Packager, компонент OLE, поставляемый с Windows 3.1 до Windows XP, позволяет «объекту, не относящемуся к OLE» быть » упакован », чтобы его можно было встроить в OLE-клиент.

OLE 2.0

OLE 2.0 был следующим этапом эволюции OLE, преследуя те же цели, что и версия 1.0, но был повторно реализован поверх COM вместо прямого использования VTBL. Новыми функциями были автоматизация OLE, перетаскивание и структурированное хранилище. Моникеры произошли от имен объектов OLE 1 и предоставили иерархическую систему именования объектов и ресурсов, аналогичную URL-адресам или URI, которые были изобретены независимо. Теперь Windows объединила две технологии, поддерживающие тип URL Moniker и схему URL Moniker.

Пользовательские элементы управления OLE

Пользовательские элементы управления OLE были представлены в 1994 году как замена устаревшим элементам управления Visual Basic Extension. Вместо их обновления новая архитектура была основана на OLE. В частности, любой контейнер, поддерживающий OLE 2.0, уже может встраивать настраиваемые элементы управления OLE, хотя эти элементы управления не могут реагировать на события, если контейнер не поддерживает это. Пользовательские элементы управления OLE обычно поставляются в виде библиотеки динамической компоновки с расширением.ocx. В 1996 году все интерфейсы для элементов управления (кроме IUnknown) стали необязательными, чтобы уменьшить размер файлов элементов управления, чтобы они загружались быстрее; затем они были названы Элементы управления ActiveX.

Технические детали

Объекты и контейнеры OLE реализованы поверх модели компонентных объектов ; это объекты, которые могут реализовывать интерфейсы для экспорта своей функциональности. Обязательным является только интерфейс IOleObject, но могут потребоваться и другие интерфейсы, если требуется функциональность, экспортируемая этими интерфейсами.

Чтобы облегчить понимание того, что следует, необходимо пояснить некоторую терминологию. Статус просмотра объекта — это то, является ли объект прозрачным, непрозрачным или непрозрачным со сплошным фоном, а также поддерживает ли он рисование с указанным аспектом. Местом расположения объекта является объект, представляющий расположение объекта в его контейнере. Контейнер поддерживает объект сайта для каждого содержащегося объекта.

Далее следует список интерфейсов, сгруппированных по объектам, которые обычно нуждаются в их реализации. Интерфейсы, обычно реализуемые объектом OLE, обычно вызываются контейнером OLE, и наоборот. Обратите внимание, что отступ в следующем списке указывает на наследование интерфейса. Все интерфейсы без отступа являются производными от IUnknown.

OLE-объекта

DataObject
При реализации позволяет передавать данные и уведомлять об изменениях данных. Он должен быть реализован объектами, которые должны поддерживать перетаскивание, копироваться или вставляться из буфера обмена, или быть связаны или встроены в содержащий документ.
ObjectWithSite
Позволяет вызывающий, чтобы сообщить объекту OLE о своем сайте. Эта функция также обеспечивается OleObject, но ObjectWithSite может использоваться, если поддерживается, если OleObject не используется для других целей.
OleCache
Позволяет кэшировать визуальные презентации из DataObject . Это позволяет встроенному объекту сохранять свое визуальное представление, таким образом, позволяя отображать его позже без необходимости запуска приложения, которое использовалось для создания объекта.
Обычно используется стандартная реализация.

OleCache2
Обеспечивает более детальный контроль над кешированием.
Обычно используется стандартная реализация.
OleCacheControl
Этот интерфейс не вызывается контейнером, но внутри объекта, чтобы позволить ему получать уведомления о том, когда его DataObject работает, тем самым позволяя ему подписаться на уведомления об изменении данных этого объекта и, таким образом, позволяя ему обновлять кешированное представление
Обычно используется стандартная реализация.
OleDocument
Позволяет объекту OLE поддерживать несколько представлений своих данных, а также несколько связанных функций.
OleDocumentView
Объект документа (объект, реализующий OleDocument ) реализует этот интерфейс для каждого представления. Он позволяет вызывающему абоненту установить местоположение объекта, запросить и установить размер объекта, а также показать и активировать его, а также некоторые связанные функции.
OleWindow
OleInPlaceActiveObject
Вызывается внешним контейнером объекта для взаимодействия с ним, пока он активен, например для обработки клавиш-ускорителей в очереди сообщений контейнера, которые предназначены для содержащегося в нем объекта.
OleInPlaceObject
Вызывается контейнером для активации или деактивации объекта.

IOleInPlaceObjectWindowless
Объект без окон — это объект, который не имеет собственного окна, но вместо этого отображается в окне своего контейнера. Он используется контейнером для ретрансляции сообщений, полученных окном контейнера, которые предназначены для содержащегося в нем объекта. Например, если мышь перемещается по окну, Windows помещает сообщение о перемещении мыши вместе с координатами мыши в очередь сообщений окна. Если это окно содержит внедренные объекты без окон, сообщение может быть передано такому объекту, если координаты указателя мыши находятся над этим объектом. По тем же причинам этот интерфейс также предоставляет доступ к интерфейсу объекта DropTarget.
OleLink
Позволяет объекту поддерживать связывание, например позволяя контейнеру устанавливать источник связанного объекта.
Обычно используется стандартная реализация.
OleObject
Возможно, наиболее важный интерфейс для объекта OLE. Например, он позволяет контейнеру информировать объект о своем сайте, инициализировать объект на основе данных, открывать и закрывать его, запрашивать и устанавливать размер объекта, запрашивать уведомления на AdviseSink <91 контейнера.>и выполнять объекты, определенные как «глаголы» на объекте. Эти глаголы часто включают «Открыть» или «Изменить», но могут также включать и другие глаголы. Один из глаголов определяется как главный глагол, и он выполняется, когда пользователь дважды щелкает объект.
ViewObject
Позволяет объекту рисовать себя напрямую, без передачи DataObject в контейнер. Для объектов, которые поддерживают и DataObject, и этот интерфейс, обычно используется общая реализация базовой реализации.

ViewObject2
Дополнительно позволяет вызывающей стороне запрашивать размер объекта.

ViewObjectEx
Добавляет поддержку рисования прозрачных объектов без мерцания, проверки попадания для объектов неправильной формы и установки размера объекта.

OLE container

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

IAdviseSink2
Дополнительно позволяет разработчику получать уведомления при изменении источника ссылки объекта OLE.
IAdviseSinkEx
Дополнительно позволяет разработчику получать уведомления при изменении статуса просмотра объекта OLE.
IOleClientSite
Этот интерфейс позволяет вызывающему абоненту получать информацию о контейнере и местоположении объекта, а также запрашивать сохранение, изменение размера, отображение объекта, скрытый и т. д.
IOleDocumentSite
Позволяет вызывающему абоненту немедленно запросить активацию объекта на этом сайте. Если этот интерфейс реализован, также должны быть реализованы IOleClientSite, IOleInPlaceSite и IAdviseSink .
IOleContainer
Этот интерфейс позволяет вызывающей стороне перечислять встроенные объекты в контейнере или находить такие объекты по имени. Это в первую очередь полезно, если контейнер хочет поддерживать ссылки на встроенные объекты.
IOleWindow
IOleInPlaceUIWindow
Позволяет встроенным объектам согласовывать пространство для панелей инструментов в окне контейнера.

IOleInPlaceFrame
Позволяет вызывающей стороне попросить контейнер вставить свои пункты меню в пустое меню, которое станет совместным меню. Также позволяет вызывающему объекту запрашивать у контейнера отображение или скрытие этого меню, отображение или скрытие диалоговых окон и обработку клавиш-ускорителей, полученных содержащимся объектом, предназначенным для контейнера.
IOleInPlaceSite
Если контейнер реализует этот интерфейс, он позволяет активировать встроенные объекты на месте, т. е. без открытия в отдельном окне. Он обеспечивает доступ к IOleInPlaceUIWindow.

IOleInPlaceSiteEx
контейнера. Если контейнер реализует этот интерфейс, он позволяет встроенным объектам проверять, нужно ли им перерисовывать при активации или деактивации. Это также позволяет им запрашивать активацию пользовательского интерфейса.

IOleInPlaceSiteWindowless
Если контейнер желает поддерживать внедренные объекты без окон, он должен предоставить функциональность встроенным объектам, чтобы заменить функциональность, обычно предоставляемую окном внедренного объекта. Например, этот интерфейс предоставляет способ доступа к контексту устройства окна контейнера, тем самым позволяя встроенному объекту рисовать в окне контейнера.
IOleUILinkContainer
Содержит методы, которые стандартные диалоговые окна OLE, управляющие связанными объектами используйте для обновления связанных объектов в контейнере или для запроса и изменения их источников. Используется диалоговыми окнами «Ссылки», «Изменить источник», «Обновить ссылки» и «Свойства объекта».

IOleUILinkInfo
Дополнительно позволяет диалоговым окнам запрашивать, когда в последний раз обновлялись связанные объекты, и было ли это сделано автоматически или вручную.
IOleUIObjInfo
Содержит методы, необходимые для диалогового окна «Свойства объекта». Например, если пользователь открывает диалоговое окно «Свойства объекта» и просит преобразовать объект в другой тип, вызывается метод в этом интерфейсе.
IOleUndoManager
Предоставляет централизованную службу отмены для обоих сам контейнер и встроенные объекты. Когда выполняется отменяемое действие, создается IOleUndoUnit и добавляется в IOleUndoManager

Other

IDataAdviseHolder
Методы IDataObject, которые относящиеся к уведомлениям об изменении данных могут быть реализованы путем вызова методов этого интерфейса.
Обычно используется стандартная реализация.
IOleAdviseHolder
Методы IOleObject, относящиеся к уведомлениям, могут быть реализованы путем вызова методов этого интерфейса.
Обычно используется стандартная реализация.
IDropSource
Реализуется объектами, которые можно перетаскивать, т.е. он может быть источником операций перетаскивания. Когда он реализован, он позволяет объекту рисовать эффекты перетаскивания и указывать, когда объект отбрасывается или операция перетаскивания отменяется.
IDropTarget
Реализовано с помощью объекты, которые принимают отброшенные объекты, т. е. могут быть целью операций перетаскивания. Когда он реализован, он позволяет цели указать, будет ли принят отброшенный объект, и что произойдет с объектом после его удаления.
IOleCommandTarget
Может быть реализовано объектами (объектами OLE, OLE контейнеры и другие объекты), которые хотят поддерживать определенные стандартные команды. Он позволяет вызывающим абонентам запрашивать, поддерживаются ли команды, и выполнять команды. Команды, которые объект обычно может захотеть реализовать, могут включать такие вещи, как «удалить», «вырезать», «скопировать», «вставить», «отменить», «найти», «напечатать», «сохранить», «увеличить» и скоро. В настоящее время определено 58 стандартных команд, включая команды, обычно используемые офисным программным обеспечением, веб-браузерами и аналогичными приложениями.
IOleUndoUnit
Представляет действие, которое можно отменить. Он содержит всю информацию, необходимую для отмены действия. Он создается объектами и контейнерами, так что отменяемые действия могут быть добавлены в контейнер IOleUndoManager.

IOleParentUndoUnit
Позволяет блоку отмены содержать другие блоки отмены. По сути, это позволяет юниту отмены действовать как стек отмены, группируя юниты отмены вместе. Например, если запускается макрос, все отменяемые действия, выполняемые макросом, могут быть сгруппированы в один блок отмены.
IOleWindow
Этот интерфейс представляет окно контейнера или содержащегося объекта. Это позволяет вызывающим абонентам получать дескриптор окна и переключать функцию контекстно-зависимой справки. Когда функция контекстно-зависимой справки включена, указатель мыши обычно изменяется на стрелку со знаком вопроса, чтобы указать, что щелчок по элементу пользовательского интерфейса приведет к открытию окна справки.

Competition

OpenDoc Технологии пытались составить конкуренцию OLE. Некоторые конкуренты Microsoft считали OpenDoc более надежным и простым в использовании; однако OpenDoc имеет некоторые известные проблемы. OpenDoc позволял пользователям просматривать и редактировать информацию в приложениях, прямо конкурируя с проприетарным стандартом OLE от Microsoft. В 1993 году некоторые конкуренты Microsoft создали консорциум под названием Component Integration Laboratories («CIL») для разработки OpenDoc как открытого стандарта для межплатформенного связывания и встраивания.

Microsoft требовала совместимости с OLE в качестве условия сертификации Microsoft совместимости приложения с Windows 95. Изначально Microsoft объявила, что приложения, использующие OpenDoc, будут считаться совместимыми с OLE и получат сертификацию для Windows 95. Позже Microsoft отменила это решение и заявила, что приложения, использующие OpenDoc, могут вообще не проходить сертификацию. Microsoft не раскрывала спецификации и отлаженные версии OLE до тех пор, пока не выпустила свои конкурирующие приложения.

Взаимодействие

Использование объектов OLE ограничивает взаимодействие, поскольку эти объекты не широко поддерживаются в программах для просмотра или редактирования файлов вне Microsoft Windows (например, встраивание других файлов в файл, таких как в виде таблиц или диаграмм из приложения для работы с электронными таблицами в текстовом документе или файле презентации). Если программное обеспечение, которое понимает объект OLE, недоступно, объект обычно заменяется изображением (растровое представление объекта) или не отображается вообще.

См. Также

  • OLE Automation
  • OLE для управление процессами (OPC)
  • Компонентная объектная модель (COM)
  • Распределенная компонентная объектная модель (DCOM)
  • Динамический обмен данными (DDE)
  • Интернет-носитель тип
  • Многоцелевые расширения почты Интернета (MIME)
  • Shscrap.dll (файлы запоминания оболочки)

Ссылки

Внешние ссылки

  • ripOLE — извлекает вложения из документов OLE

Эта статья основана на материалах, взятых из Free On-line Dictionary of Computing до 1 ноября 2008 г. и включенных в соответствии с условиями «перелицензирования» GFDL, версия 1.3 или новее.

Понравилась статья? Поделить с друзьями:
  • Микрофон внезапно стал очень тихим windows 10
  • Микрофон видит как динамики windows 10
  • Метро эксодус ошибка previous launch was unsuccessful windows 10
  • Микрофон trust gxt 239 nepa драйвера скачать для windows 10
  • Микрофон high definition audio device не работает windows 10