AccesSoft - Статьи - Регистрация компонентов
Главная | Заказ программы | Каталог программ | Форум MS Access | Литература | Статьи | Новости | Гостевая | Контакты | Карта    

Программная регистрация ActiveX DLL и OCX

Обычно регистрация (или ее отмена) ActiveX-компонентов выполняется с помощью автономной утилиты regsvr32.exe. Если необходимо выполнять процедуры регистрации в момент выполнения вашего VB-приложения, то можно воспользоваться обращением к этой утилите с помощью Shell. Однако существует еще один способ проведения таких операций, недостатком которого является необходимость «железного» включения имени нужного компонента в код программы.

Дело в том, что каждый ActiveX-компонент (ActiveX DLL или OCX) имеет функции DllRegisterServer и DllUnregisterServer, выполняющие операции регистрации/отмены регистрации над собственным компонентом. И обратиться к ним можно напрямую, как к обычной DLL-функции.

Например, если вы хотите программно проводить операции регистрации компонента COMCTL32.OCX, то в программе нужно описать две такие функции:

' функция регистрации компонента COMCTL32.OCX
Declare Function RegComCtl32 Lib "COMCTL32.OCX" Alias DllRegisterServer() As Long
' функция отмены регистрации компонента COMCTL32.OCX
Declare Function UnRegComCtl32 Lib "COMCTL32.OCX" Alias DllUnregisterServer() As Long

Однако следует иметь в виду, что если вы не указали полный путь к файлу, то его поиск будет осуществляться только в системном или текущем каталоге. Кроме того, при выполнении операций целесообразно реализовать механизм анализа возможных ошибок.

Приведем пример кода регистрации библиотеки Test.DLL, которая хранится в произвольном каталоге C:\MyApp:

Declare Function RegTestDLL Lib "Test.DLL" Alias DllRegisterServer() As Long 
Const ERROR_SUCCESS = 0&
Dim retCode As Long
On Error Resume Next 
' включаем программную обработку ошибок
ChDrive "C:"       
' Устанавливаем нужный
ChDir "C:\MyApp"    
' каталог текущим
regCode = RegTestDLL() 
' регистрация Test.DLL
' анализ возможных ошибок
If Err <> 0 Then
  MsgBox "Файл Test.DLL не найден"
Else 
  If regCode <> ERROR_SUCCES Then 
    MsgBox "Операция регистрации не выполнена"
  End If 
End If

Используемые материалы: MSDN. Совет 389.

Обсудить на форуме...

Автор: Дмитрий Сонных (aka Joss) Добавлен: 17.01.2008

Главная | Заказ программы | Каталог программ | Форум MS Access | Литература | Статьи | Новости | Гостевая | Контакты | Карта    
Сухие смеси - анализ сухих смесей. Сухие смеси-гарантия качества. | монтаж сэндвич-панелей | Кабели силовые, цена ВБбШв, характеристики кабеля ВБбШв. Кабель вббшв 5х120 цена.

Copyright © 2007 - 2012 AccesSoft. All Rights Reserved