cResult = RegSvr('MyOcx.ocx') && Register
cResult = RegSvr('MyOcx.ocx',.t.) && Register
cResult = RegSvr('MyOcx.ocx',.f.) && Unregister
FUNCTION RegSvr
* Author.....: William GC Steinford
* Date.......: Jan 23, 2003
* Abstract...: Programmatically Register, Unregister an OCX control
LPARAMETERS pcOCX,plReg
LOCAL llReg
llReg = iif( PCount()>1, plReg, .T. ) && Default to register
DECLARE INTEGER LoadLibrary IN kernel32 As "LoadLibraryA";
STRING lpLibFileName
LOCAL lhLib
lhLib = LoadLibraryA( pcOCX )
if (lhLib < 32) && HINSTANCE_ERROR
RETURN "ERROR: Could not Load Library "+pcOCX
ENDIF
*// Find the entry point.
DECLARE INTEGER GetProcAddress IN kernel32;
INTEGER hModule,;
STRING lpProcName
if llReg
lpRegProc = GetProcAddress(lhLib, 'DllRegisterServer')
if lpRegProc>0 && Procedure exists!
DECLARE INTEGER DllRegisterServer IN &pcOCX AS OcxReg
lnRes = OcxReg()
if lnRes=0
RETURN "SUCCESS"
else
RETURN "ERROR: DllRegisterServer returned "+Tran(lnRes)
endif
ELSE
* //unable to locate entry point
RETURN "ERROR: Library "+pcOCX+" has no entry point for DllRegisterServer"
ENDIF
ELSE && Unregister
lpRegProc = GetProcAddress(lhLib, 'DllUnregisterServer')
if lpRegProc>0 && Procedure exists!
DECLARE INTEGER DllUnregisterServer IN &pcOCX AS OcxUnReg
lnRes = OcxUnReg()
if lnRes=0
RETURN "SUCCESS"
else
RETURN "ERROR: DllUnregisterServer returned "+Tran(lnRes)
endif
ELSE
* //unable to locate entry point
RETURN "ERROR: Library "+pcOCX+" has no entry point for DllUnregisterServer"
ENDIF
ENDIF