Catalyst Knowledge Base

Using CreateObject in Visual Basic

Document ID: 100211
Products: All Products, All Platforms
Last Reviewed: January 31, 2007

Summary

The CreateObject function can be used in Visual Basic, Visual Basic for Applications (VBA) and VBScript to dynamically create an instance of an ActiveX control or COM object. To redistribute an application which uses CreateObject with a Catalyst control, the control's Initialize method must be called.

More Information

Catalyst components can be dynamically created using the CreateObject function, however they must be explicitly initialized using the Initialize method if the application is redistributed to a system that does not have a development license. The first argument to the Initialize method is the runtime license key. This key is used by the control to validate the license, and enables the control to function on a system which does not have a development license installed.

The runtime license key is created during installation and can be found in the Include folder where the product was installed. Each product has a different key, so refer to the technical reference for the location of the file. The evaluation versions of the product will not have a runtime license key, which means that an application which uses the control cannot be redistributed until a development license has been purchased.

It is important to note that the runtime license key is not your product serial number. To create your key, you can use the License Manager utility included with the product, and select License | Header File to create a file that contains your key. You can either include that file directly in your project, or copy it. You should never share your runtime license key or include it with any source code that you redistribute.

If the Initialize method is not called after CreateObject has been used to create an instance of the control, an error may be returned when you change a property value or call a method. The Initialize method should always be called immediately after CreateObject, and the return value should always be checked to make sure that the initialization was successful.

The components in SocketTools 3.6 and earlier versions do not have an Initialize method, so CreateObject should not be used to create an instance of the control. If you wish to use a control without placing it on a form, create a reference to the control instead.

Sample Code


Dim objSocket As Object
Dim strLicenseKey As String
Dim nError As Long

' Define the runtime license key
strLicenseKey = ""

' Create an instance of the control
Set objSocket = CreateObject("SocketTools.SocketWrench.1")

' Initialize the control with the license key
nError = objSocket.Initialize(strLicenseKey)
If nError > 0 Then
    MsgBox "Unable to initialize control", vbExclamation
    Exit Sub
End If 

' When finished with the control, call the Uninitialize
' method and release the object
objSocket.Uninitialize
Set objSocket = Nothing


Feedback
Please tell us how useful this article was in answering your question:
Not Answered Partial Answer Completely Answered

Let us know if you have any feedback on how this article could be improved,
or suggestions for additional Knowledge Base articles:
Email Address:
If you would like a response to your feedback, please provide your email address