powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как зарегистрировать dll программно?
7 сообщений из 7, страница 1 из 1
Как зарегистрировать dll программно?
    #34362358
reiler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет. Нужно зарегистрировать
программно dll, но без regsvr32. Как можно это сделать?
...
Рейтинг: 0 / 0
Как зарегистрировать dll программно?
    #34362480
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
reiler,
привет. Для того, чтобы зарегистрировать ActiveX DLL, нужно вызвать точку входа DllRegisterServer . Если имя DLL известно на момент компиляции, то всё просто, надо описать и вызвать эту точку:
Код: plaintext
Private Declare Function RegisterMyDLL Lib "mydll.dll" Alias "DllRegisterServer" () As Long
DLL при этом должна располагаться в текущем или в прописанном в путях каталоге, подробнее здесь . Если это не так, надо временно сделать каталог с DLL текущим (If CurDir <> ... Then ChDir ...).

Если имя DLL не известно на момент компиляции, придётся вызывать LoadLibrary и GetProcAddress , чтобы получить адрес точки входа, и затем вызвать её по адресу. Это сложнее.
...
Рейтинг: 0 / 0
Как зарегистрировать dll программно?
    #34363506
reiler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Бенедикту спасибо, вот нашел такую вещь, но почему-то у меня не срабатывает(.
Что не так может быть?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Private Declare Function RegTestDLL Lib "Test.DLL" Alias _  
    "DllRegisterServer"() As Long  
Private Sub Command1_Click()
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  
End Sub
...
Рейтинг: 0 / 0
Как зарегистрировать dll программно?
    #34363527
reiler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
говорит, что Test.dll не найдена и в режиме debug смотрел RegTestDLL() = Empty
...
Рейтинг: 0 / 0
Как зарегистрировать dll программно?
    #34363653
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
reiler,
может быть не так:
1) нет dll по указанному пути;
2) dll не является ActiveX dll;
3) dll скомпилирована с нестандартными соглашениями вызова функций;
4) и т.д.

Закомментируй On Error Resume Next и посмотри, что за ошибка возникает.
...
Рейтинг: 0 / 0
Как зарегистрировать dll программно?
    #34363694
reiler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
все заработало, спасибо)!!!.
...
Рейтинг: 0 / 0
Как зарегистрировать dll программно?
    #34363735
reiler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Но меня мучает еще один вопрос:
Можно ли сделать так чтобы при перерегистрации dll в реестре не удалялись прежние ключи
в корне ветки HKEY_LOCAL_MACHINE\SOFTWARE \Classes, а записывались поверх.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как зарегистрировать dll программно?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]