# CFOBJECT Type="COM"

CFOBJECT allows you to create and use COM (Component Object Model) objects. Any automation server object type that is currently registered on a machine can be invoked. You can use a utility like Microsoft's OLEView to browse COM objects. OLEView, as well as information about COM and DCOM, can be found at Microsoft's OLE Development web site `http://www.microsoft.com/oledev/`.

To use CFOBJECT, you need to know the program ID or filename of the object, the methods and properties available through the IDispatch interface, and the arguments and return types of the object's methods. The OLEView utility can give you this information for most COM objects.

### Syntax

    <CFOBJECT TYPE="COM"
        ACTION="action"
        CLASS="program_ID"
        NAME="text"
        CONTEXT="context"
        SERVER="server_name">

#### ACTION

Required. One of the following:

- Create -- Use Create to instantiate a COM object (typically a DLL) prior to invoking methods or properties.
- Connect -- Use Connect to connect to a COM object (typically an EXE) that is already running on the server specified in SERVER.

#### CLASS

Required. Enter the component ProgID for the object you want to invoke.

#### NAME

Required. Enter a name for the object.

#### CONTEXT

Optional. InProc, Local, or Remote. Uses Registry setting when not specified.

#### SERVER

Required when CONTEXT="Remote". Enter a valid server name using UNC (Universal Naming Convention) or DNS (Domain Name Server) conventions, in one of the following forms:

    SERVER="\\lanserver"
    SERVER="lanserver"
    SERVER="http://www.servername.com"
    SERVER="www.servername.com"
    SERVER="127.0.0.1"

### Example

    <HTML>
    <HEAD>
    <TITLE>CFOBJECT (COM) Example</TITLE>
    </HEAD>

    <BODY>
    <H3>CFOBJECT (COM) Example</H3>
    <!---
    Create a COM object as an inproc server (DLL).
    (CLASS= prog-id)
    --->
    <CFOBJECT ACTION="Create"
        TYPE="COM"
        CLASS=Allaire.DocEx1.1
        NAME="obj">

    <!---
    Call a method.
    Note that methods that expect no arguments should
    be called using empty parenthesis.
    --->
    <CFSET obj.Init()>

    <!---
    This object is a collection object, and should
    support at a minimum:
    Property : Count
    Method : Item(inarg, outarg)
    and a special property called _NewEnum
    --->
    <CFOUTPUT>
      This object has #obj.Count# items.
      <BR>
      <HR>
    </CFOUTPUT>

    <!---
    Get the 3rd object in the collection.
    --->
    <CFSET emp = obj.Item(3)>
    <CFOUTPUT>
      The last name in the third item is #emp.lastname#.
      <BR>
      <HR>
    </CFOUTPUT>

    <!---
    Loop over all the objects in the collection.
    --->
    <P>Looping through all items in the collection:
    <BR>
    <CFLOOP COLLECTION=#obj# ITEM=file2>
      <CFOUTPUT>
        Last name: #file2.lastname# <BR>
      </CFOUTPUT>
    </CFLOOP>
    ...
    </BODY>
    </HTML>