Регистрация DLL и ActiveX |
![]() |
![]() |
Статьи |
Вы знаете как зарегистрировать OLE управление типа динамической библиотеки (DLL) или управление ActiveX (OCX файлы) из приложения Delphi? Одна из особенностей, которые делают Delphi популярным - это в большинстве случаев при проектировании приложения получается всего один исполняемый файл, который нужно отдать заказчику. Однако, в некоторых ситуациях, например, когда Вы импортируете управление ActiveX в Ваш проект, Вы должны будете удостовериться, что это управление ActiveX зарегистрировано на машинах Ваших пользователей. Если управление не зарегистрировано, будет вызвано исключение EOleSysError. RegSvr32.exeRegsvr32.exe - инструмент, который из командной строки регистрирует DLL и управления ActiveX в системе. Вы можете вручную использовать Regsvr32.exe (Windows.Пуск->Выполнить...) чтобы зарегистрировать или убрать регистрацию управления OLE типа DLL плп управления ActiveX, которые являются саморегистрируемыми. Когда Вы используете Regsvr32.exe, это пытается загрузить компонент и вызвать функцию DLLSelfRegister. Если попытка успешная, Regsvr32.exe отображает окно с сообщением об успешной регистрации. Regsvr32.exe имеет следующие опции командной строки:
В коде DelphiЧтобы вызвать инструмент Regsvr32.exe изнутри кода Delphi, нужна функция, которая может запустить файл на выполнение и ждать, когда он закончит работу. Вот как может выглядеть процедура RegisterOCX:
Обратите внимание: переменная ocxPath указывает путь к Flash.ocx управлению ActiveX. Чтобы быть способным зарегистрироваться, управление ActiveX должна осуществить функцию DllRegisterServer. Иными словами, эта функция создает записи в системном реестре для всех классов управления. Мы не должны волноваться относительно функции DllRegisterServer, мы просто должны удостовериться, что она есть. Ради простоты, мы предположим, что управление ActiveX (.OCX файл) расположено в той же самой папке, что и Ваше приложение. В строке ExecAndWait('regsvr32','/s ' + ocxPath); в коде выше вызывается Regsvr32.exe, которой передается переключатель /s (не отображать сообщения) и полный путь к управлению ActiveX. Функция ExecAndWait:
Функция ExecAndWait использует вызов ShellExecuteEx API для запуска файла. |