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.
<CFOBJECT TYPE="COM" ACTION="action" CLASS="program_ID" NAME="text" CONTEXT="context" SERVER="server_name">
Required. One of the following:
Required. Enter the component ProgID for the object you want to invoke.
Required. Enter a name for the object.
Optional. InProc, Local, or Remote. Uses Registry setting when not specified.
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"
<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>