Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как зарегистрировать dll программно? / 7 сообщений из 7, страница 1 из 1
01.03.2007, 08:41
    #34362358
reiler
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как зарегистрировать dll программно?
Всем привет. Нужно зарегистрировать
программно dll, но без regsvr32. Как можно это сделать?
...
Рейтинг: 0 / 0
01.03.2007, 09:32
    #34362480
Бенедикт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как зарегистрировать dll программно?
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
01.03.2007, 13:40
    #34363506
reiler
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как зарегистрировать dll программно?
Бенедикту спасибо, вот нашел такую вещь, но почему-то у меня не срабатывает(.
Что не так может быть?
Код: 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
01.03.2007, 13:45
    #34363527
reiler
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как зарегистрировать dll программно?
говорит, что Test.dll не найдена и в режиме debug смотрел RegTestDLL() = Empty
...
Рейтинг: 0 / 0
01.03.2007, 14:12
    #34363653
Бенедикт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как зарегистрировать dll программно?
reiler,
может быть не так:
1) нет dll по указанному пути;
2) dll не является ActiveX dll;
3) dll скомпилирована с нестандартными соглашениями вызова функций;
4) и т.д.

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


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