fbpx
Wikipedia

OLE Automation

In Microsoft Windows applications programming, OLE Automation (later renamed to simply Automation[1][2]) is an inter-process communication mechanism created by Microsoft. It is based on a subset of Component Object Model (COM) that was intended for use by scripting languages – originally Visual Basic – but now is used by several languages on Windows. All automation objects are required to implement the IDispatch interface. It provides an infrastructure whereby applications called automation controllers can access and manipulate (i.e. set properties of or call methods on) shared automation objects that are exported by other applications. It supersedes Dynamic Data Exchange (DDE), an older mechanism for applications to control one another.[3] As with DDE, in OLE Automation the automation controller is the "client" and the application exporting the automation objects is the "server".

Contrary to its name, automation objects do not necessarily use Microsoft OLE, although some Automation objects can be used in OLE environments. The confusion has its roots in Microsoft's earlier definition of OLE, which was previously more or less a synonym of COM.

Advantages and limitations edit

To ensure interoperability, automation interfaces are limited to use a subset of all COM types.[4][5] Specifically, automation interfaces must use SAFEARRAY instead of raw COM arrays.

Automation-compatible COM servers can, however, rely on the in-built OLE marshalling implementation.[6] This avoids the need for additional proxy/stub projects for marshalling out-of-process.

Usage edit

Automation was designed with the ease of scripting in mind, so controllers often provide languages such as Visual Basic for Applications to end users, allowing them to control automation objects via scripts. Automation objects are often written in conventional languages such as C++,[7] where C++ attributes can be used to simplify development,[8] Languages such as Visual Basic and Borland Delphi also provides a convenient syntax for Automation which hides the complexity of the underlying implementation.

Type libraries edit

In order to automate an application, the developer of an automation controller must know the object model that is employed by the target application exporting activation objects.[9] This requires that the developer of the target application publicly document its object model. Development of automation controllers without knowledge of the target application's object model is "difficult to impossible".[10] Due to these complications, Automation components are usually provided with type libraries, which contain metadata about classes, interfaces and other features exposed by an object library. Interfaces are described in Microsoft Interface Definition Language. Type libraries can be viewed using various tools, such as the Microsoft OLE/COM Object Viewer (oleview.exe, part of the Microsoft Platform SDK) or the Object Browser in Visual Basic (up to version 6) and Visual Studio .NET. Type libraries are used to generate Proxy pattern/stub code for interoperating between COM and other platforms, such as Microsoft .NET and Java. For instance, the .NET Framework SDK includes tools that can generate a proxy .NET DLL to access Automation objects using both early binding (with information about interfaces extracted from a type library) and late binding (via IDispatch, mapped to the .NET Reflection API), with the built-in .NET-to-COM bridge called COM Interop.[11] While Java lacks built-in COM support, toolsets like JACOB[12] and jSegue[13] can generate proxy source code (consisting of two parts, a set of Java classes and a C++ source for a Java Native Interface DLL) from type libraries. These solutions only work on Windows. Another Java based j-Interop[14] library which enables interoperability with COM components without JNI, using DCOM wire protocol (MSRPC) and works on non-Windows platforms also.

Microsoft has publicly documented the object model of all of the applications in Microsoft Office,[15] and some other software developers have also documented the object models of their applications. Object models are presented to automation controllers as type libraries, with their interfaces described in ODL.

Language support edit

Automation is available for a variety of languages, including, but not limited to:

See also edit

References edit

  1. ^ Microsoft Corporation. "Automation (MFC)". MSDN.
  2. ^ KruJ.; Wingo, Scott; Shepherd, George (1998). "Chapter 25: Automation". Programming Microsoft Visual C++ 6.0 (5th ed.). Redmond, WA: Microsoft Press. ISBN 978-1-57231-857-1.
  3. ^ Gordon McComb (1997). . Archived from the original on 2017-08-15. Retrieved 2006-07-20. — McComb describes how to use OLE Automation instead of DDE to control WordPerfect
  4. ^ Microsoft MSDN: oleautomation attribute
  5. ^ Microsoft MSDN: Automation-Compatible Types
  6. ^ Microsoft MSDN: Marshaling Details (COM) Type Library Marshaling community additions
  7. ^ Chris Oakley. "OLE Automation for C++ programmers".
  8. ^ MSDN Magazine: C++ Attributes: Make COM Programming a Breeze with New Feature in Visual Studio .NET
  9. ^ a b Yehuda Shiran and Tomer Shiran. "OLE Automation in JavaScript". WebReference. — despite the title, the article discusses JScript rather than JavaScript
  10. ^ Bruce Armstrong (2006-01-16). "OLE — Extending the Capabilities of PowerBuilder (Part 2)". PowerBuilder Developers' Journal. 12 (11).
  11. ^ a b Appleman, Dan (2001). "Chapter 15: COM Interop and Accessing the Win32 API". Moving to VB.NET: Strategies, Concepts, and Code. Apress. ISBN 978-1-893115-97-2.
  12. ^ "The JACOB Project". 2004-10-17.
  13. ^ "jSegue". 2005-12-14.
  14. ^ "j-Interop Java COM interoperability from any platform".
  15. ^ "How to find and use Office object model documentation". KnowledgeBase. Microsoft Corporation.
  16. ^ "Compiler COM Support". MSDN. Microsoft.
  17. ^ "OLE Automation using Delphi". About.com.
  18. ^ "Open Object Rexx".
  19. ^ Jan Dubois (Summer 1998). "Win32::OLE". The Perl Journal. 3 (2).
  20. ^ The PHP Group (2006-07-25). "PHP: COM and .Net (Windows)".
  21. ^ Mark Hammond. "Python for Windows Extensions".
  22. ^ Sourceforge. "Comtypes Python package".
  23. ^ Tcl programmers. "OLE from a Tcl perspective".
  24. ^ Stan Littlefield. "OLE TUTORIAL WINBATCH OLE PROGRAMMING".

Further reading edit

  • Microsoft Corporation (December 1993). OLE 2 Programmer's Reference: Creating Programmable Applications with OLE Automation v. 2. Programmer's Reference Library. Microsoft Press. ISBN 978-1-55615-629-8.
  • Kraig Brockschmidt (1995). Inside OLE. Microsoft Press.
  • Microsoft Corporation (1996). OLE Automation Programmer's Reference. Programmer's Reference Library. Microsoft Press. ISBN 978-1-55615-851-3.
  • Microsoft Corporation (1999). Microsoft Office 2000 Visual Basic for Applications Language Reference. Microsoft Press. ISBN 978-1-57231-955-4. — full printed documentation of the object model of Microsoft Office

External links edit

  • General paper on the introduction and problems implementing OLE.
  • "VOLE - A Neat C++ COM/Automation Driver" — an open-source, compiler-independent C++ COM Automation driver library, for use when having to drive IDispatch directly. VOLE is highly robust, fully encapsulates all "low-level" aspects of IDispatch, and is very flexible, taking and returning normal C++ types.

automation, this, article, written, like, manual, guide, please, help, rewrite, this, article, remove, advice, instruction, january, 2012, microsoft, windows, applications, programming, later, renamed, simply, automation, inter, process, communication, mechani. This article is written like a manual or guide Please help rewrite this article and remove advice or instruction January 2012 In Microsoft Windows applications programming OLE Automation later renamed to simply Automation 1 2 is an inter process communication mechanism created by Microsoft It is based on a subset of Component Object Model COM that was intended for use by scripting languages originally Visual Basic but now is used by several languages on Windows All automation objects are required to implement the IDispatch interface It provides an infrastructure whereby applications called automation controllers can access and manipulate i e set properties of or call methods on shared automation objects that are exported by other applications It supersedes Dynamic Data Exchange DDE an older mechanism for applications to control one another 3 As with DDE in OLE Automation the automation controller is the client and the application exporting the automation objects is the server Contrary to its name automation objects do not necessarily use Microsoft OLE although some Automation objects can be used in OLE environments The confusion has its roots in Microsoft s earlier definition of OLE which was previously more or less a synonym of COM Contents 1 Advantages and limitations 2 Usage 2 1 Type libraries 2 2 Language support 3 See also 4 References 5 Further reading 6 External linksAdvantages and limitations editTo ensure interoperability automation interfaces are limited to use a subset of all COM types 4 5 Specifically automation interfaces must use SAFEARRAY instead of raw COM arrays Automation compatible COM servers can however rely on the in built OLE marshalling implementation 6 This avoids the need for additional proxy stub projects for marshalling out of process Usage editAutomation was designed with the ease of scripting in mind so controllers often provide languages such as Visual Basic for Applications to end users allowing them to control automation objects via scripts Automation objects are often written in conventional languages such as C 7 where C attributes can be used to simplify development 8 Languages such as Visual Basic and Borland Delphi also provides a convenient syntax for Automation which hides the complexity of the underlying implementation Type libraries edit In order to automate an application the developer of an automation controller must know the object model that is employed by the target application exporting activation objects 9 This requires that the developer of the target application publicly document its object model Development of automation controllers without knowledge of the target application s object model is difficult to impossible 10 Due to these complications Automation components are usually provided with type libraries which contain metadata about classes interfaces and other features exposed by an object library Interfaces are described in Microsoft Interface Definition Language Type libraries can be viewed using various tools such as the Microsoft OLE COM Object Viewer oleview exe part of the Microsoft Platform SDK or the Object Browser in Visual Basic up to version 6 and Visual Studio NET Type libraries are used to generate Proxy pattern stub code for interoperating between COM and other platforms such as Microsoft NET and Java For instance the NET Framework SDK includes tools that can generate a proxy NET DLL to access Automation objects using both early binding with information about interfaces extracted from a type library and late binding via IDispatch mapped to the NET Reflection API with the built in NET to COM bridge called COM Interop 11 While Java lacks built in COM support toolsets like JACOB 12 and jSegue 13 can generate proxy source code consisting of two parts a set of Java classes and a C source for a Java Native Interface DLL from type libraries These solutions only work on Windows Another Java based j Interop 14 library which enables interoperability with COM components without JNI using DCOM wire protocol MSRPC and works on non Windows platforms also Microsoft has publicly documented the object model of all of the applications in Microsoft Office 15 and some other software developers have also documented the object models of their applications Object models are presented to automation controllers as type libraries with their interfaces described in ODL Language support edit Automation is available for a variety of languages including but not limited to ABAP C C with Compiler COM Support 16 or with libraries like MFC or ATL C Visual Basic and Visual Basic for Applications Visual FoxPro dBASE via OleAutoClient class Delphi 17 Microsoft NET languages 11 APL most Windows versions Java only with third party tools JScript 9 and VBScript Open Object Rexx 18 Perl 19 PHP 20 PowerBuilder Python 21 22 Ruby via the win32ole library included in the standard Ruby 1 8 x or later distribution Tcl 23 Visual DataFlex WinBatch 24 See also editActiveX Active Scripting Object Linking and Embedding OLE Component Object Model COM References edit Microsoft Corporation Automation MFC MSDN KruJ Wingo Scott Shepherd George 1998 Chapter 25 Automation Programming Microsoft Visual C 6 0 5th ed Redmond WA Microsoft Press ISBN 978 1 57231 857 1 Gordon McComb 1997 Using OLE Automation to Control WordPerfect Archived from the original on 2017 08 15 Retrieved 2006 07 20 McComb describes how to use OLE Automation instead of DDE to control WordPerfect Microsoft MSDN oleautomation attribute Microsoft MSDN Automation Compatible Types Microsoft MSDN Marshaling Details COM Type Library Marshaling community additions Chris Oakley OLE Automation for C programmers MSDN Magazine C Attributes Make COM Programming a Breeze with New Feature in Visual Studio NET a b Yehuda Shiran and Tomer Shiran OLE Automation in JavaScript WebReference despite the title the article discusses JScript rather than JavaScript Bruce Armstrong 2006 01 16 OLE Extending the Capabilities of PowerBuilder Part 2 PowerBuilder Developers Journal 12 11 a b Appleman Dan 2001 Chapter 15 COM Interop and Accessing the Win32 API Moving to VB NET Strategies Concepts and Code Apress ISBN 978 1 893115 97 2 The JACOB Project 2004 10 17 jSegue 2005 12 14 j Interop Java COM interoperability from any platform How to find and use Office object model documentation KnowledgeBase Microsoft Corporation Compiler COM Support MSDN Microsoft OLE Automation using Delphi About com Open Object Rexx Jan Dubois Summer 1998 Win32 OLE The Perl Journal 3 2 The PHP Group 2006 07 25 PHP COM and Net Windows Mark Hammond Python for Windows Extensions Sourceforge Comtypes Python package Tcl programmers OLE from a Tcl perspective Stan Littlefield OLE TUTORIAL WINBATCH OLE PROGRAMMING Further reading editMicrosoft Corporation December 1993 OLE 2 Programmer s Reference Creating Programmable Applications with OLE Automation v 2 Programmer s Reference Library Microsoft Press ISBN 978 1 55615 629 8 Kraig Brockschmidt 1995 Inside OLE Microsoft Press Microsoft Corporation 1996 OLE Automation Programmer s Reference Programmer s Reference Library Microsoft Press ISBN 978 1 55615 851 3 Microsoft Corporation 1999 Microsoft Office 2000 Visual Basic for Applications Language Reference Microsoft Press ISBN 978 1 57231 955 4 full printed documentation of the object model of Microsoft OfficeExternal links editOLE Automation General paper on the introduction and problems implementing OLE VOLE A Neat C COM Automation Driver an open source compiler independent C COM Automation driver library for use when having to drive IDispatch directly VOLE is highly robust fully encapsulates all low level aspects of IDispatch and is very flexible taking and returning normal C types Retrieved from https en wikipedia org w index php title OLE Automation amp oldid 1118741955, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.