All ActiveX DLL or OCX export two functions: DllRegisterServer and DllUnregisterServer. They are used to register and unregister the ActiveX in the Windows registry, and are usually invoked from regsvr32.exe at registration time.
However, you can register and unregister these files programmatically whenever you want to, provided that you know the name of the DLL or OCX at compile time. All you have to do is prepare two aliased functions, as in the following example, that shows how to register and unregister the COMCTL32.OCX file:
'function to call to register the ActiveXPrivate Declare Function RegComCtl32 Lib "COMCTL32.OCX" Alias _ "DllRegisterServer" () As Long' function to call to unregister the ActiveXPrivate Declare Function UnRegComCtl32 Lib "COMCTL32.OCX" Alias _ "DllUnregisterServer" () As LongConst ERROR_SUCCESS = &H0
Note that the two functions work only if the DLL is in the system path or in the current directory. Therefore, if you want to register a DLL located elsewhere on your hard disk, you must use ChDrive and ChDir commands to make that directory the current one. For example, say that the you have a Test.DLL file in the C:MyApp directory. Here’s the code you need to register it:
Private Declare Function RegisterTestDLL Lib "Test.Dll" Alias _ "DllRegisterServer" () As LongDim retCode As LongOn Error Resume Next' move to the DLL's directoryChDrive "C:"ChDir "C:MyApp"' register the DLLretCode = RegisterTestDLL()If Err <> 0 Then ' probably the DLL isn't there MsgBox "Unable to find the Test.Dll file"ElseIf retCode <> ERROR_SUCCESS Then ' the registration run and failed MsgBox "Registration failed"End If