Talk:Object Linking and Embedding

From Wikipedia, the free encyclopedia
Jump to: navigation, search
          This article is of interest to the following WikiProjects:
WikiProject Computing / Software (Rated B-class, Mid-importance)
WikiProject icon This article is within the scope of WikiProject Computing, a collaborative effort to improve the coverage of computers, computing, and information technology on Wikipedia. If you would like to participate, please visit the project page, where you can join the discussion and see a list of open tasks.
B-Class article B  This article has been rated as B-Class on the project's quality scale.
 Mid  This article has been rated as Mid-importance on the project's importance scale.
Taskforce icon
This article is supported by WikiProject Software.
WikiProject Microsoft / .NET / Windows (Rated B-class)
WikiProject icon This article is within the scope of WikiProject Microsoft, a collaborative effort to improve the coverage of articles relating to Microsoft on Wikipedia. If you would like to participate, please visit the project page, where you can join the discussion and see a list of open tasks.
B-Class article B  This article has been rated as B-Class on the project's quality scale.
 ???  This article has not yet received a rating on the project's importance scale.
Taskforce icon
This article is supported by WikiProject .NET (marked as High-importance).
Taskforce icon
This article is supported by WikiProject Microsoft Windows (marked as High-importance).

object linking[edit]

Questions about the concepts, about how embedding works, from someone who hopes for an answer in not terribly technical language - 1. Say I embed a video from the Google Video site on my school's Dance History page and then view it from my home computer - whose bandwidth is in use? 2. If I view a video on the Google site, whose bandwidth is used? Both mine and Google's, or just Google's or just mine? 3. Does linking to a video and embedding a video mean the same thing in terms of bandwidth? Thanks -

If the video is stored on the Google Video site, than obviously the bandwidth of the Google Video site is used when it is viewed. Of course a small amount of bandwidth is used to transmit the HTML page that contains the embedded Google Video, or the link to the Google Video website, but this is not normally significant. However, see Slashdot effect. Shinobu 10:19, 2 July 2007 (UTC)

i'd like to know the difference between java and OLE

What's the difference between a can opener and a sperm whale? You are talking about fundamentally different things, listing the difference would be meaningless. Read the Wikipedia articles for Java programming language and Object linking and embedding and you will be enlightened. Nixdorf 13:49, 2004 Dec 21 (UTC)

Virtual table[edit]

The VTBL concepts pioneered in OLE 1.0 later evolved to become an architecture for software components known as the component object model (COM), and later DCOM.

The virtual table concept is an inevitable part of object-oriented languages, so ... because C++ is older than OLE I doubt that virtual tables pioneered at OLE. A usage of virtual tables for interfacing components could be first in OLE, or perhaps just Microsoft's first use may be in OLE. But I do not know for sure. Unless someone with better knowledge refomulates the sentence, I will remove it after week. --Alvin-cs 21:51, 13 November 2005 (UTC)

@The virtual table concept is an inevitable part of object-oriented languages: not necessarily, it is perfectly possibly to conceive of an OO language that uses some other mechanism to figure out where the executable code associated with an object is stored. That said, you are right that C++ has had vtables since 1985 and that therefore the use of vtables in COM can be hardly considered pioneering. Shinobu 10:12, 2 July 2007 (UTC)
vtables are not a mandatory part of an OO language. They are an efficient form of dispatching in OO languages in which the number of methods/messages an object may support are fixed at compile time. Languages that are extensible have to support different dispatch mechanisms. It just so happens, however, that because vtables are in C++ -and can be hacked into raw C- that COM depends on them. COM was designed to support C as well as C++, with lots of macros to make it possible. What COM does have is a model for delegation to other components, with the QueryInterface design letting you ask for different interfaces, all of which can share the same Controlling Unknown, so that when you ask one delegate for another interface, it knows how to refer stuff back up. —Preceding unsigned comment added by SteveLoughran (talkcontribs) 14:39, 3 October 2007 (UTC)

Microsoft renamed the OLE 2.0 technology to ActiveX[edit]

Thats wrong guys :). ActiveX is a small and lightweight subset of OLE 2 for GUI controls implementation in web browsers. MSDN still uses both terms, f.e. "An ActiveX control is implemented as an in-process server (typically a small object) that can be used in any OLE container."

or "A Microsoft ActiveX control is essentially a simple OLE object that supports the IUnknown interface."

You're right ActiveX referred to controls--but not specifically for implementation in web browsers. ActiveX controls were just OLE based custom controls for use in development in Visual Basic, Visual C++, etc. The implementation in web pages came later, though its where the term became known

Windows System Registry / Registration Database[edit]

OLE2 / COM / DCOM and device driver software make heavy use of the binary dot DAT files known as the MS Windows system registration database. The database or registry consists of about 5 trees (Windows internal data structures). Microsoft terms these trees as Hives. The root names of these Hives are as follows: HKEY_CLASSES_ROOT, HKEY_CURRNT_USER, HKEY_LOCAL_MACHINE, HKEY_USERS, and HKEY_CURRENT_CONFIG. The H stands for Hive. These hive root keys have aliases HKCR, HKCU, HKLM, HKU ?, and HKCC. It is possible to load or connect remotely to other hives. Microsoft Windows Win32 has an application programming interface (API) named the Registry-API. The registry can store number values, true/false values, strings, and binary data. For more recent versions of Windows, certain parts of the registry are "protected" from Registry editor tool access and normal Registry-API calls by plain user programs. This is a form of security, and copy protection.

For OLE2 / COM / DCOM all of the objects, file classes, and so on, have handlers, and interfaces, and various other entries in this registry / database. Each of these items is identified using a Globally Unique Identifier or GUID. Using Microsoft development tools such as Visual Studio and Visual C++, software targeted to use with OLE2 / COM / DCOM that uses drag-and-drop, in-place activation (OLE2 object hosting), etc, has its interfaces, objects, and so on automatically have GUIDs generated for them and registered in the software developer's Windows registry. There is a command line tool "GUIDGEN" (or similar) that can generate GUID hexadecimal strings on demand for the user for use in such software development.

When OLE2 / COM / DCOM software is distributed to other users, either the installation software or the running program itself can register all of this information in the Windows registry of the user's system. These modifications can have the new software take over handling of all sorts of file and mime types not necessarily authorized or intended by the user. If no backup of the registry is made, the settings have to be reset either by uninstalling the new software, re-installing the previous software, importing some sub-key registry file settings from a known "properly working" computer (running the same Windows version and application software), or by manually tinkering with the registry settings using the Registry Editor and consulting reliable information on the internet about the settings that require changing.

Manually changing the registry can be disastrous when entries for device driver software, or file system access methods get corrupted. Usually Windows will save the last working copy of registry files during shutdown, and write the newest working configuration to the latest version files. In addition Windows Backup can save a copy of the registry files to a standard backup folder on the system. A "Windows Recovery" diskette (made by Windows Backup) can help boot the system by making use of this Windows Backup folder of registry files. Registry setting changes (new software settings and installations) that were made after the backup was performed are then lost and must be redone / reinstalled. This situation can result in system files / drivers not matching the information from an old copy of the registry. A reinstallation of sets of CD service packs may be required to insure your system has the majority of its driver files in correct correspondence. Web "Windows Update" changes may subsequently also have to be reapplied. This is why it is useful to backup the registry on a timely basis. Oldspammer 11:52, 23 September 2006 (UTC)

@The H stands for Hive: Wrong. The H stands for handle. The HKEY_* constants can be passed to any function that accepts a HKEY: a handle to a registry key. I stopped reading your post after that; did it have a point that you can concisely state, say in one or two sentences? Shinobu 10:08, 2 July 2007 (UTC)


The OCX redirect violates the rule requiring editors to mention the redirect in the document, "preferably in the first couple of paragraphs". I followed OCX here and there is no explanation of why I arrived at the OLE article. - 19:47, 15 January 2007 (UTC)

The lead of the article is very poor in general. For starters, it describes COM, not OLE, and as you mention, it doesn't say why some OCX related things redirect here. Shinobu 10:02, 2 July 2007 (UTC)

Note to self and others[edit]

I've read somewhere that at the very least an OLE object or control will have to implement IOleObject, IOleInPlaceObject and IViewObject. Don't know if it's true, but it is a reminder that we're a little hazy on the techinical details. The article needs more work in that department. Shinobu 01:49, 9 July 2007 (UTC)

Have added section "Techincal details". If it's a bit daunting, then all I can say is: "Indeed." Shinobu 17:21, 9 July 2007 (UTC)

depends what you mean by OLE object. There's the things you have to impl to embed inside word, the things to be an OCX and the stuff for an ActiveX control; that being the least of all. As the rules change, so do the requirements. —Preceding unsigned comment added by SteveLoughran (talkcontribs) 14:40, 3 October 2007 (UTC)
IOleObject is optional, only required when need to communicate to the control's consumer in ways other than events. [1]. Skyfiler (talk) 18:01, 7 February 2016 (UTC)


This article definately needs more references. On the technical side we can use public API documentation, which must be correct or else people can't write software. In the rare cases, where API documentation is incorrect, the complaints will be all over the Internet - GetThemeFont anyone? However, the non-technical side of the story cannot be referenced using Microsoft's own webpages. Why not? Because they're heavily tainted by Microsoft's marketing department, which has the annoying tendency to shift the meaning of terminology and brands and to rebrand old things with new labels, making it almost impossible to accurately follow the history of any given technology or to distill any objectively verifiable truth. So my question to you is this: "Does anyone still have books on this subject from the nineties or links to e.g. reliable third-party websites that can be used as references?" Shinobu 08:34, 23 August 2007 (UTC)

Fair use rationale for Image:Custom controls.png[edit]

Nuvola apps important.svg

Image:Custom controls.png is being used on this article. I notice the image page specifies that the image is being used under fair use but there is no explanation or rationale as to why its use in this Wikipedia article constitutes fair use. In addition to the boilerplate fair use template, you must also write out on the image description page a specific explanation or rationale for why using this image in each article is consistent with fair use.

Please go to the image description page and edit it to include a fair use rationale. Using one of the templates at Wikipedia:Fair use rationale guideline is an easy way to insure that your image is in compliance with Wikipedia policy, but remember that you must complete the template. Do not simply insert a blank template on an image page.

If there is other fair use media, consider checking that you have specified the fair use rationale on the other images used on this page. Note that any fair use images uploaded after 4 May, 2006, and lacking such an explanation will be deleted one week after they have been uploaded, as described on criteria for speedy deletion. If you have any questions please ask them at the Media copyright questions page. Thank you.

BetacommandBot 21:38, 29 October 2007 (UTC)

Semantic differences in L vs E[edit]

The second part of the Overview section is misleading for a couple of reasons:

The concept of “embedding” is also central to much use of multimedia in Web pages, which tend to embed video, animation (including Flash animations), and audio files within the hypertext markup language (such as HTML or XHTML) or other structural markup language used (such as XML or SGML) — possibly, but not necessarily, using a different embedding mechanism than OLE.

Web pages almost always use a different mechanism for including images and media. Stating "possibly, but not necessarily" is not logically wrong, but it isn’t exactly right. Also, this confuses the two concepts. The term Embed, when used in conjunction with webpages and media, is almost exactly what is meant by the term Link in OLE.

Microsoft states the differences clearly:

“When a link to an object is inserted in a compound document, the source data, or link source, continues to reside wherever it was initially created, usually in another document. The compound document contains only a reference, or link, to the actual data stored at the link source, along with information about how to present that data to the user.
“An embedded object is physically stored in the compound document, along with all the information needed to manage the object. In other words, the embedded object is actually a part of the compound document in which it resides.”

The Overview section should be reworded or expanded to clarify any confusion. --dvdrtrgn (talk) 23:46, 9 December 2009 (UTC)

Platform support[edit]

I'm pretty sure OLE 1.0 was available as an extension for Mac OS, but Mac support was dropped for 2.0 onwards. Is that true? If so, is it worth adding to the article? — (talk) 12:40, 10 March 2010 (UTC)


The criticism section is unclear. It says "reality was not so optimistic" about OpenDoc and links to the OpenDoc#Problems page which is rather long and detailed, but how this constitutes criticism of OLE remains vague. (Perhaps the whole section needs a rewrite.) (talk) 02:50, 2 June 2011 (UTC)

Level of support[edit]

The truth is, practically all Windows applications that are able to deal with graphics, including essentially all office programs (even WordPad!), support embedding OLE objects, and most of them also support being embedded as OLE objects.

However, the above sentence is completely non-encyclopedic! But I'm sure most people would agree anecdotally that this is true, and I really think the article ought to mention something like this. At the moment, reading it could give the impression that it is a piece of highly technical and niche software, and this just isn't true.

If someone could find a good source or two and some better wording, I think this would be a very useful contribution to the article. If OLE support is still necessary to be Windows Logo certified, then mentioning this would along with a count of applications that are certified might be a good way to do it. Quietbritishjim (talk) 16:10, 15 August 2011 (UTC)

External links modified[edit]

Hello fellow Wikipedians,

I have just added archive links to one external link on Object Linking and Embedding. Please take a moment to review my edit. If necessary, add {{cbignore}} after the link to keep me from modifying it. Alternatively, you can add {{nobots|deny=InternetArchiveBot}} to keep me off the page altogether. I made the following changes:

When you have finished reviewing my changes, please set the checked parameter below to true to let others know.

Question? Archived sources still need to be checked

Cheers. —cyberbot IITalk to my owner:Online 07:15, 29 August 2015 (UTC)