Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Регистрация ДЛЛ Добавлено: 19.02.04 09:42  

Автор вопроса:  Дмитрий Щапов

Здраствуйте дорогие дамы и господа, приветствую вас на наш, короче к сути: VB нагло вылетает при попытке зарегистрировать ДЛЛ, точнее при создании процесса.

'====================================================================

Public Declare Function LoadLibraryA Lib "kernel32" (ByVal strName As String) As Long

Public Declare Function GetProcAddress Lib "kernel32" (ByVal lngModule As Long, ByVal strName As String) As Long

Public Declare Function FreeLibrary Lib "kernel32" (ByVal lngModule As Long) As Long

Public Declare Function CreateThread Lib "kernel32" (anyThread As Any, ByVal lngSize As Long, ByVal lngStart As Long, ByVal lngValue As Long, ByVal lngFlags As Long, lngThread As Long) As Long

Public Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long

Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

'=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Public Sub RegisterLibary(ByVal PathLib As String, ByVal Register As Boolean)

Dim lngReg As Long

Dim lngValue As Long

Dim lngThread As Long

On Error Resume Next

lngReg = LoadLibraryA(PathLib)

lngValue = GetProcAddress(lngReg, IIf(Register, "DllRegisterServer", "DllUnregisterServer"))

'вот щас он вылетит >

lngThread = CreateThread(ByVal 0, 0, ByVal lngValue, ByVal 0, 0, lngThread)

WaitForSingleObject lngThread, 1000

CloseHandle lngThread

FreeLibrary lngReg

End Sub

'=======================================

Да ещё вылетает с грохотом, 3и ошибки одновременно вылазят.

Попутный вопрос:

Есть у меня *.exe, и 2е *.dll , причем дллки не зарегистрированы(что мне и надо сделать). А если я закапаю эти dllки в exe, то как мне их зарегистрировать?

Ответить

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

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


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #1
Добавлено: 20.02.04 19:23

Что за DLL? На чем? ActiveX?

Ответить

Номер ответа: 2
Автор ответа:
 Дмитрий Щапов



Вопросов: 71
Ответов: 321
 Профиль | | #2 Добавлено: 20.02.04 20:28

Я ДЛЛку написал, разное в неё пихнул(значения ведь не имеет) на VB, не ActiveX.

В проге:Set DLL=new Dll_class 'так и пишу, а оно мне в лицо ошибку, я так понял зарегистрировать надо. Вот и в регистрации подвох... :(

Ответить

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



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #3
Добавлено: 20.02.04 21:36

Если не секрет, то как на VB создать не ActiveX dll ?

Ответить

Номер ответа: 4
Автор ответа:
 Дмитрий Щапов



Вопросов: 71
Ответов: 321
 Профиль | | #4 Добавлено: 20.02.04 21:44

Ну я по обычному заходишь...о блин! Ошибочка вышла

Ну... в конце концов проблемы это не решает!

Ответить

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



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #5
Добавлено: 21.02.04 00:35

Я вот этим пользовался...

Private Function RegDll(ByVal sPath As String, ByVal bReg As Boolean) As Long
On Error Resume Next
Dim hLib As Long
hLib = LoadLibrary(sPath)

 

RegDll = CallWindowProc(ByVal GetProcAddress(hLib, IIf(bReg, "DllRegisterServer", "DllUnregisterServer")), 0&, 0&, 0&, 0&)

 

Call FreeLibrary(hLib)
End Function


Посмотри там имеется ли в экспорте функции регистрации этих самых dll ???

Ответить

Номер ответа: 6
Автор ответа:
 BP(CyRax)



ICQ: 204447456 

Вопросов: 1
Ответов: 6
 Web-сайт: basicproduction.nm.ru
 Профиль | | #6
Добавлено: 21.02.04 02:04
Вроде ж ВБ не поддерживает потоков. Хотя у людей вроде были и рабочие примеры - поспрашивай на форуме.

Ответить

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



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #7
Добавлено: 21.02.04 09:48

2BP, при чем тут потоки ?

Ответить

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


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #8
Добавлено: 21.02.04 14:45

2BP(CyRax): как это не поддерживает? Он создание не ActiveX DLL не поддерживает, но TweakVB и это исправляет...

Ответить

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



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #9
Добавлено: 21.02.04 18:08

Раз уж заговорили о этой твике, объясните, как она че-то там создает, вроде, мыкался я сней, так и не дошло до меня как с ее помощью создать реальную dll :(
PS
На счет потоков, VB поддерживает и создание и работу спотоками, другое дело что бОльшая часть функций виртуальной машины VB при сврем вызове, закрывают процесс, с вывалившейся ошибкой... (Тут статья была, так там было написано, что если, к примеру, из др. потока вызвать MsgBox(), то прога "вывалится", но если же воспользоваться API аналогом этой функции, то все проходит чисто...)

Ответить

Номер ответа: 10
Автор ответа:
 Дмитрий Щапов



Вопросов: 71
Ответов: 321
 Профиль | | #10 Добавлено: 21.02.04 21:02

А в VB нет свойства автоматической регистрации длл?

Ответить

Номер ответа: 11
Автор ответа:
 Дмитрий Щапов



Вопросов: 71
Ответов: 321
 Профиль | | #11 Добавлено: 21.02.04 22:45

Раз уж заговорили о этой твике, объясните плиз, где вы её взяли и для чего она?.........плиз

Ответить

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


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #12
Добавлено: 22.02.04 12:22
tweakvb.com. Там написано, что он делает.

Ответить

Номер ответа: 13
Автор ответа:
 CyRax Shadow



ICQ: 204447456 

Вопросов: 0
Ответов: 7
 Web-сайт: basicproduction.nm.ru
 Профиль | | #13
Добавлено: 23.02.04 00:43

'вот щас он вылетит >

lngThread = CreateThread(ByVal 0, 0, ByVal lngValue, ByVal 0, 0, lngThread)

---

VB-шный экзешник - однопоточное приложение. В IDE создание потока срабатывает, а в экзешнике нет. И не надо спорить по этому поводу. Это общеизвестный факт.

Ответить

Страница: 1 |

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



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