Вы правы, прежде чем использовать OCX, его необходимо зарегистрировать в системном регистре. Предположим вы создали OCX с именем "test.ocx". Теперь его необходимо зарегистрировать в системе: var OCXHand: THandle; RegFunc: TDllRegisterServer; //добавьте OLECtl в список используемых модулей begin OCXHand:= LoadLibrary('c:\windows\system\test.ocx'); RegFunc:= GetProcAddress(OCXHand, 'DllRegisterServer'); //чуствительность к регистру? if RegFunc <> 0 then ShowMessage('Ошибка!'); FreeLibrary(OCXHand); end; Для обратной процедуры, "отрегистрации" OCX, вам необходимо всего лишь заменить 'DllRegisterServer' на 'DllUnregisterServer'. Также для полноты картины вы можете добавить код, извещающий пользователя о процессе регистрации, например так: "Does the file exist" (файл не найден), "Was the call to LoadLibrary successful?" (был ли вызов LoadLibrary успешным?), ... Некоторые пояснения: OCX - специфический форма dll, поэтому вы можете загрузить ее в память, используя знакомую уже API функцию LoadLibrary(). OCX экспортирует две функции, осуществляющие ее регистрацию и "отрегистрацию". Для получения адреса этих функций используется соответствующая функция GetProcAddress. После этого остается только вызвать необходимую функцию. И это все! После этого для успокоения души с помощью редактора регистров (regedit.exe) вы можете проверить регистрацию вашего OCX. |