Function CreateObject() Foundation

Creates and returns a reference to a COM/ActiveX component.

Syntax
CreateObject( <cProgID>, [<cServer>] ) --> oAutomationObject | NIL
Parameters
<cProgID>
The argument <cProgID> contains the ProgID (Programmatic Identifier) of the ActiveX component to be created.
A ProgID has the syntax:
ApplicationName.ObjectName.Version 
where the last part (.Version) is optional. The version defaults to the highest version installed. Use regedit.exe and inspect the entries under HKEY_CLASSES_ROOT for valid ProgIDs.
<cServer>
The argument <cServer> specifies the server on which the instance is to be created. The syntax for <cServer> is:
\\servername 
Return

The function returns an object from class AutomationObject. If the object cannot be created, return is NIL. In case CCreateObject() returns NIL, the functions ComLastError() and ComLastMessage() can be used to query the error number and the error message.

Description

The AutomationObject returned can be used to access the methods and properties of the COM/ActiveX component, in the same way as with an ordinary Xbase++ object. Method calls as well as read or write access to a property (instance variable) is routed automatically to the COM/ActiveX component. It makes no difference whether the object is created on the local machine, or whether it is hosted by a server specified in parameter <cServer>.

For performance reasons, CreateObject() returns an instance of class AutomationObject. However, if an Xbase++ application needs to react to COM/ActiveX events, an instance of class ActiveXObject is required instead. Please see the example below that illustrates how to create an ActiveXObject from an AutomationObject. Also see method AutomationObject:dynamicCast()for further information.

Examples
Create a new Word application using CreateObject()
#pragma library( "ascom10.lib" ) 

PROCEDURE Main 
   LOCAL oApp 

   oApp := CreateObject( "Word.Application" ) 

   IF NIL == oApp 
     // Word.Application could not be created. 
     ? "Error: ", ComLastError() 
     ? "Description:" 
     ? ComLastMessage() 
     RETURN 
   ENDIF 

   // Access a property of the Word application 
   ? oApp:visible 
   // Assign a value to a property 
   oApp:visible := ! oApp:visible 
   // Call a method 
   oApp:quit() 
   // destroy the reference 
   oApp:destroy() 
RETURN 
Reacting to COM/ActiveX events of an object returned by CreateObject()
#pragma library( "ascom10.lib" ) 

PROCEDURE Main 
   LOCAL oApp 

   oApp := CreateObject( "Word.Application" ) 

   IF NIL == oApp 
     // Word.Application could not be created. 
     ? "Error: ", ComLastError() 
     ? "Description:" 
     ? ComLastMessage() 
     RETURN 
   ENDIF 

   // Create an ActiveXObject from the AutomationObject 
   // returned by the CreateObject() function 
   oApp := oApp:dynamicCast( ActiveXObject() ) 

   // Set callback code block for "Quit" event 
   oApp:quit := {|| QOUT("Finished!") } 

   WAIT "Close Word to execute :quit code block" 

   // Clean up 
   oApp:quit() 
   oApp:destroy() 
RETURN 
Feedback

If you see anything in the documentation that is not correct, does not match your experience with the particular feature or requires further clarification, please use this form to report a documentation issue.