Любой OCX/ActiveX control, или OLE сервер может быть зарегистрирован в системе за счет применения своих внутренних функций. Этот метод имеет ряд преимуществ: - Позволяет отслеживать результат регистрации класса в системе - Не требует никаких внешних программ Автора, к сожалению не помню, взято с Universal Thread
Note: Для корректного применения кода, вам необходимо в функциях перехватить error 1754 (Cannot find entry point "name" in the DLL.) Эта ошибка генерирутся в случае передачи в качестве параметра имени файла, не являющемся OCX/ActiveX control или OLE сервером.
Функция: RegisterControl
*-- Функция регистрации OCX/ActiveX контрола или OLE сервера FUNCTION RegisterControl *-- Параметр: * Имя файла, с указанием пути *-- Функция возвращает: * Logical TRUE если регистрация прошла успешно, в противном случае FALSE . * В случае отсутствия файла, функция вернет также FALSE . *-- Пример вызова функции: * llRegistered = RegisterControl("c:\windows\systemcomctl32.ocx") LPARAMETERS tcFileName LOCAL llSuccess IF FILE(tcFileName) DECLARE INTEGER DllRegisterServer ; IN (tcFileName) ; AS __DllRegisterServer__ *-- This function returns 0 if successful IF __DllRegisterServer__() = 0 llSuccess = .T. ELSE llSuccess = .F. ENDIF ELSE llSuccess = .F. ENDIF RETURN llSuccess **Обратная функция FUNCTION UnregisterControl LPARAMETERS tcFileName LOCAL llSuccess IF FILE(tcFileName) DECLARE INTEGER DllUnregisterServer ; IN (tcFileName) ; AS __DllUnregisterServer__ *-- This function returns 0 if successful IF __DllUnregisterServer__() = 0 llSuccess = .T. ELSE llSuccess = .F. ENDIF ELSE llSuccess = .F. ENDIF RETURN llSuccess
взято с Universal Thread