SAMPLE: AutoDll.exe - OLE Automation Inproc Object

ID: Q107982


The information in this article applies to:
  • Microsoft OLE Libraries for Windows and Win32s
  • Microsoft OLE Libraries, used with:
    • Microsoft Windows NT, versions 3.5, 3.51
    • Microsoft Windows 95


SUMMARY

AutoDll.exe demonstrates how to create a OLE automation inproc object.


MORE INFORMATION

The following file is available for download from the Microsoft Download Center. Click the file name below to download the file:

AutoDll.exe
For more information about how to download files from the Microsoft Download Center, please visit the Download Center at the following Web address
http://www.microsoft.com/downloads/search.asp
and then click How to use the Microsoft Download Center.

AutoDll.exe implements a OLE automation inproc object (DLL server) called Hello that exposes one property, HelloMessage, and one method, SayHello. It uses an OLE provided IDispatch implementation that is created using CreateStdDispatch.

The AUTODLL dynamic-link library (DLL) uses the memory allocator used by the calling task. This is required of all inproc objects. The new and delete operators are redefined to use the calling task[ASCII 146]s memory allocator and all memory management is done using the redefined new and delete.

The interface that AUTODLL exposes is described using an object description language (HELLO.ODL). The mktyplib tool is used to create a type library (HELLO.TLB) from HELLO.ODL. CreateStdDispatch is then used to implement an IDispatch interface using the interface description in the type library.

AUTODLL exports DllGetClassObject, which is called by OLE to get the class factory. OLE uses this classfactory to create a Hello object. Automation controllers use the IDispatch interface exposed by the Hello object to access its property and method. AUTODLL also exports DllCanUnloadNow.

The SIMPAUTO sample in the Software/Data library demonstrates the implementation of an automation object with the same methods and properties as AUTODLL, but which is an EXE. The main differences between the two samples are in the MAIN.CPP file.

To Run

The Hello object exposes the following:

   ProgID : SimpleAutomationInProc.Hello 

   Method and Property Names       Notes
   --------------------------------------------------------------
   HelloMessage  (prop)          Sets and returns string.
   SayHello    (method)          Displays HelloMessage in an edit
                                 control. 
Update the path in HELLO.REG to the current location of the object and the type library.

To Compile

Requires OLE 2.01 or later.

Include device=vmb.386 in the [386Enh] section of SYSTEM.INI.
NOTE: vmb.386 can be found in \OLE2\BIN. Run the WXSERVER.EXE from \OLE2\BIN before running the makefile.

   File        Function
   ------------------------------------------------------------------------

   MAIN.CPP    Does initialization, redefines new and delete, implements
               DllGetClassObject, DllCanUnloadNow. and contains code that
               calls CreateStdDispatch.
   HELLO.CPP   Implements the HELLO object.
   HELLOCF.CPP Implements the HELLO class factory.
   HELLO.ODL   Object Description Language that describes the property and
               method that HELLO exposes.
   HELLO.H     Defines the HELLO object and the class factory.
   TLB.H       Header file created by mktyplib.
   MAKEFILE    Makefile for project.
   VB.MAK,
   VB.FRM      Visual Basic project files to control this sample. 

Additional query words: server

Keywords : kbfile kbole kbsample kbAutomation kbNTOS350 kbNTOS351 kbOLE200 kbWinOS95
Version : :
Platform :
Issue type :


Last Reviewed: December 7, 1999
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.