Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Как зарегистрировать библиотеку? Добавлено: 24.03.03 11:46  

Автор вопроса:  fotowolf | Web-сайт: www.photoua.net

Люди подскажите как это делаеться и каким софтом. Буду очень благодарен.

Ответить

  Ответы Всего ответов: 12  

Номер ответа: 1
Автор ответа:
 hedgehog



ICQ: 175571327 

Вопросов: 15
Ответов: 207
 Web-сайт: ezh.ru
 Профиль | | #1
Добавлено: 24.03.03 12:35

из командного окна:

regsvr32 [полный путь и имя файла библиотеки или контрола]

перед путем и именем возможны ключи

/s - выполнять тихо, без сообщений

/u - разрегистрировать (не по-русски как-то правда :)

Ответить

Номер ответа: 2
Автор ответа:
 Irbis



Вопросов: 5
Ответов: 47
 Web-сайт: www.oplata.nm.ru
 Профиль | | #2
Добавлено: 24.03.03 22:47

Цитирую статью, где откопал, не помню, так что сори, копирайта не будет.

Начало цитаты.

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

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

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

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

' функция регистрации компонента COMCTL32.OCXDeclare Function RegComCtl32 Lib "COMCTL32.OCX" Alias _      DllRegisterServer() As Long' функция отмены регистрации компонента COMCTL32.OCXDeclare 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 LongOn 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  
Конец цитаты.
Желаю успеха, Irbis
 Если вам глядя на компьютер, все чаще, хочется взять молоток ...
,пора подумать о визите к психиатору илм модернизации. 

Ответить

Номер ответа: 3
Автор ответа:
 Irbis



Вопросов: 5
Ответов: 47
 Web-сайт: www.oplata.nm.ru
 Профиль | | #3
Добавлено: 24.03.03 23:01

Что то не получилось форматирование, поэтому продублирую.

Обычно регистрация (или ее отмена) 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 

 

Ответить

Номер ответа: 4
Автор ответа:
 hedgehog



ICQ: 175571327 

Вопросов: 15
Ответов: 207
 Web-сайт: ezh.ru
 Профиль | | #4
Добавлено: 25.03.03 11:52

Забавная возможность. Надо будет поюзать :) Хотя метод с regsvr32 меня еще не разу не подводил

Ответить

Номер ответа: 5
Автор ответа:
 Irbis



Вопросов: 5
Ответов: 47
 Web-сайт: www.oplata.nm.ru
 Профиль | | #5
Добавлено: 25.03.03 13:48

Подводить то он может и не подводит, но и ошибки при регистрации тоже получить невозможно. Такие как отказ регистрации, при запуске пользователем с огрониченными правами.

Желаю удачи.

Irbis

Ответить

Номер ответа: 6
Автор ответа:
 hedgehog



ICQ: 175571327 

Вопросов: 15
Ответов: 207
 Web-сайт: ezh.ru
 Профиль | | #6
Добавлено: 25.03.03 18:00

Попробовал, в принципе работает с поправкой синтаксиса:

Declare Function RegTestDLL Lib "Test.DLL" Alias _

"DllRegisterServer" () As Long

Хотя надо сказать, что regsvr32 работал у меня и у пользователей с ограниченными правами.

Ответить

Номер ответа: 7
Автор ответа:
 Nikita



ICQ: 424638122 

Вопросов: 0
Ответов: 1
 Профиль | | #7 Добавлено: 14.06.10 19:42
Помогите плз! Когда захожу в regsvr32 пишет "Модуль dirtysock.dll агружен, но точка входа DLLRegisterServer не найдена"

Ответить

Номер ответа: 8
Автор ответа:
 VbStarter



ICQ: 357911808 

Вопросов: 118
Ответов: 1340
 Web-сайт: moscowdevils.ru
 Профиль | | #8
Добавлено: 15.06.10 13:29
надо запустить из-под безопасного режима через Выполнить. Это ошибка прав доступа.

Ответить

Номер ответа: 9
Автор ответа:
 VbStarter



ICQ: 357911808 

Вопросов: 118
Ответов: 1340
 Web-сайт: moscowdevils.ru
 Профиль | | #9
Добавлено: 15.06.10 13:30
Или сделай свою прогу как написано ;)

Ответить

Номер ответа: 10
Автор ответа:
 VbStarter



ICQ: 357911808 

Вопросов: 118
Ответов: 1340
 Web-сайт: moscowdevils.ru
 Профиль | | #10
Добавлено: 15.06.10 13:30
У меня (да и у всех наверное) это было. какая ось кстати?

Ответить

Номер ответа: 11
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #11 Добавлено: 15.06.10 16:20
Если entry для DllRegisterServer не найдена - библиотека не ActiveX.
И юзайте тег SOURCE для кода:
[SOURCE]
Declare Function RegTestDLL Lib "Test.DLL" Alias _ DllRegisterServer() As Long
[/SOURCE

Ответить

Номер ответа: 12
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #12 Добавлено: 15.06.10 16:21
Чтоб выглядело так
  1.  
  2. Declare Function RegTestDLL Lib "Test.DLL" Alias _  
  3.     DllRegisterServer() As Long  
  4. Const ERROR_SUCCESS = 0&
  5. Dim retCode As Long
  6. On Error Resume Next  ' включаем программную обработку ошибок
  7. ChDrive "C:"        ' Устанавливаем нужный
  8. ChDir "C:\MyApp"    ' каталог текущим
  9. regCode = RegTestDLL()  ' регистрация Test.DLL
  10. ' анализ возможных ошибок
  11. If Err <> 0 Then
  12.   MsgBox "Файл Test.DLL не найден"
  13. Else  
  14.   If regCode <> ERROR_SUCCES Then  
  15.     MsgBox "Операция регистрации не выполнена"
  16.   End If  
  17. End If

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам