Object Linking and 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.
32-424: 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
64-406: 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 can also be used to transfer data between different applications using drag and drop or clipboard operations. OLE 1.0, released in 1990, was an evolution of
96-844: A command-line interface or graphical user interface . This does not include application software bundled within operating systems such as a software calculator or text editor . IUnknown In computer programming , the IUnknown interface is the fundamental interface in the Component Object Model (COM). The COM specification mandates that COM objects must implement this interface. Furthermore, every other COM interface must be derived from IUnknown. IUnknown exposes two essential features of all COM objects: object lifetime management through reference counting , and access to object functionality through other interfaces . An IUnknown (or IUnknown-derived) interface consists of
128-408: A computer program designed to carry out a specific task other than one relating to the operation of the computer itself, typically to be used by end-users . Word processors , media players , and accounting software are examples. The collective noun " application software " refers to all applications collectively. The other principal classifications of software are system software , relating to
160-404: A geography application for Microsoft Windows , or an Android application for education , or a Linux game . Sometimes a new and popular application arises that only runs on one platform , increasing the desirability of that platform. This is called a killer application or killer app , coined in the late 1980s. For example, VisiCalc was the first modern spreadsheet software for
192-516: 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 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
224-548: 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
256-684: A contentious debate in the computing community regarding web applications replacing native applications for many purposes, especially on mobile devices such as smartphones and tablets . Web apps have indeed greatly increased in popularity for some uses, but the advantages of applications make them unlikely to disappear soon, if ever. Furthermore, the two can be complementary, and even integrated. Application software can also be seen as being either horizontal or vertical . Horizontal applications are more popular and widespread, because they are general purpose, for example word processors or databases. Vertical applications are niche products , designed for
288-546: 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 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
320-467: A lifetime, or forever). Since the development and near-universal adoption of the web , an important distinction that has emerged, has been between web applications — written with HTML , JavaScript and other web-native technologies and typically requiring one to be online and running a web browser — and the more traditional native applications written in whatever languages are available for one's particular type of computer . There has been
352-747: A particular type of industry or business, or department within an organization. Integrated suites of software will try to handle every specific aspect possible of, for example, manufacturing or banking worker, accounting, or customer service. There are many types of application software: Applications can also be classified by computing platforms such as a desktop application for a particular operating system , delivery network such as in cloud computing and Web 2.0 applications, or delivery devices such as mobile apps for mobile devices . The operating system itself can be considered application software when performing simple calculating, measuring, rendering, and word processing tasks not used to control hardware via
SECTION 10
#1732801048599384-471: A pointer to a virtual method table that contains a list of pointers to the functions that implement the functions declared in the interface, in the order that they are declared in the interface. The in-process invocation call overhead is therefore identical to virtual method calls in C++. The IUnknown interface exposes three methods : QueryInterface , AddRef , and Release : The IUnknown interface ID
416-494: 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
448-412: Is a computer program designed to help people perform an activity. Depending on the activity for which it was designed, an application can manipulate text, numbers, audio, graphics, and a combination of these elements. Some application packages focus on a single task, such as word processing; others called integrated software include several applications. User-written software tailors systems to meet
480-846: 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 . OpenDoc technology tried to compete with OLE. Some of Microsoft's competitors considered OpenDoc to be more robust and easier to use. 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
512-473: Is defined as a GUID with the value of {00000000-0000-0000-C000-000000000046}. A COM component's interfaces are required to exhibit the reflexive, symmetric, and transitive properties. The reflexive property refers to the ability for the QueryInterface call on a given interface with the interface's ID to return the same instance of the interface. The symmetric property requires that when interface B
544-459: Is not restricted to the "of or on application software" meaning. For example, concepts such as application programming interface (API), application server , application virtualization , application lifecycle management and portable application apply to all computer programs alike, not just application software. Some applications are available in versions for several different platforms; others only work on one and are thus called, for example,
576-526: Is occasionally the object of controversy. For example, one of the key questions in the United States v. Microsoft Corp. antitrust trial was whether Microsoft's Internet Explorer web browser was part of its Windows operating system or a separate piece of application software. As another example, the GNU/Linux naming controversy is, in part, due to disagreement about the relationship between
608-425: 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 ,
640-489: Is royalty-free and - openly or reservedly- can be run, distributed, modified, reversed, republished, or created in derivative works without any copyright attribution and therefore revocation . It can even be sold, but without transferring the public domain property to other single subjects. Public-domain SW can be released under a (un)licensing legal statement, which enforces those terms and conditions for an indefinite duration (for
672-483: 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
SECTION 20
#1732801048599704-583: The Linux kernel and the operating systems built over this kernel . In some types of embedded systems , the application software and the operating system software may be indistinguishable from the user, as in the case of software used to control a VCR , DVD player, or microwave oven . The above definitions may exclude some applications that may exist on some computers in large organizations. For an alternative definition of an app: see Application Portfolio Management . The word "application" used as an adjective
736-513: The Windows Store , the term was extended in popular use to include desktop applications. There are many different and alternative ways to classify application software. From the legal point of view, application software is mainly classified with a black-box approach , about the rights of its end-users or subscribers (with eventual intermediate and tiered subscription levels). Software applications are also classified with respect to
768-532: The Apple II and helped sell the then-new personal computers into offices. For Blackberry it was their email software. The shortened term "app" (coined in 1981 or earlier ) became popular, with the 2008 introduction of the iOS App Store , to refer to applications for mobile devices such as smartphones and tablets . Later, with the 2010 introduction of the Mac App Store and the 2011 introduction of
800-488: 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 . 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
832-414: 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. 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
864-399: The file, such as tables or charts from a spreadsheet application in a text document or presentation file). 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. Software application An application program ( software application , or application , or app for short) is
896-440: The operation of the computer, and utility software ("utilities"). Applications may be bundled with the computer and its system software or published separately and may be coded as proprietary , open-source , or projects. When referring to applications for mobile devices such as phones, the term "app" is more commonly used. In information technology, an application ( app ), an application program , or application software
928-457: 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
960-734: The programming language in which the source code is written or executed, and concerning their purpose and outputs. Application software is usually distinguished into two main classes: closed source vs open source software applications, and free or proprietary software applications. Proprietary software is placed under the exclusive copyright, and a software license grants limited usage rights. The open-closed principle states that software may be "open only for extension, but not for modification". Such applications can only get add-ons from third parties. Free and open-source software (FOSS) shall be run, distributed, sold, or extended for any purpose, and -being open- shall be modified or reversed in
992-409: The same way. FOSS software applications released under a free license may be perpetual and also royalty-free . Perhaps, the owner , the holder or third-party enforcer of any right ( copyright , trademark , patent , or ius in re aliena ) are entitled to add exceptions, limitations, time decays or expiring dates to the license terms of use. Public-domain software is a type of FOSS which
Object Linking and Embedding - Misplaced Pages Continue
1024-417: The user's specific needs. User-written software includes spreadsheet templates, word processor macros, scientific simulations, audio, graphics, and animation scripts. Even email filters are a kind of user software. Users create this software themselves and often overlook how important it is. The delineation between system software such as operating systems and application software is not exact, however, and
#598401