Страница: 1 |
Здраствуйте дорогие дамы и господа, приветствую вас на наш, короче к сути: 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, то как мне их зарегистрировать?
Что за DLL? На чем? ActiveX? Я ДЛЛку написал, разное в неё пихнул(значения ведь не имеет) на VB, не ActiveX. В проге:Set DLL=new Dll_class 'так и пишу, а оно мне в лицо ошибку, я так понял зарегистрировать надо. Вот и в регистрации подвох... Если не секрет, то как на VB создать не ActiveX dll ? Ну я по обычному заходишь...о блин! Ошибочка вышла Ну... в конце концов проблемы это не решает! Я вот этим пользовался... 2BP, при чем тут потоки ? 2BP(CyRax): как это не поддерживает? Он создание не ActiveX DLL не поддерживает, но TweakVB и это исправляет... Раз уж заговорили о этой твике, объясните, как она че-то там создает, вроде, мыкался я сней, так и не дошло до меня как с ее помощью создать реальную dll А в VB нет свойства автоматической регистрации длл? Раз уж заговорили о этой твике, объясните плиз, где вы её взяли и для чего она?.........плиз 'вот щас он вылетит > lngThread = CreateThread(ByVal 0, 0, ByVal lngValue, ByVal 0, 0, lngThread) --- VB-шный экзешник - однопоточное приложение. В IDE создание потока срабатывает, а в экзешнике нет. И не надо спорить по этому поводу. Это общеизвестный факт. Страница: 1 |
Вопрос: Регистрация ДЛЛ
Добавлено: 19.02.04 09:42
Автор вопроса: Дмитрий Щапов
Ответы
Всего ответов: 13
Номер ответа: 1
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #1
Добавлено: 20.02.04 19:23
Номер ответа: 2
Автор ответа:
Дмитрий Щапов
Вопросов: 71
Ответов: 321
Профиль | | #2
Добавлено: 20.02.04 20:28
Номер ответа: 3
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #3
Добавлено: 20.02.04 21:36
Номер ответа: 4
Автор ответа:
Дмитрий Щапов
Вопросов: 71
Ответов: 321
Профиль | | #4
Добавлено: 20.02.04 21:44
Номер ответа: 5
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #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)
End Function
Посмотри там имеется ли в экспорте функции регистрации этих самых dll ???
Номер ответа: 6
Автор ответа:
BP(CyRax)
ICQ: 204447456
Вопросов: 1
Ответов: 6
Web-сайт:
Профиль | | #6
Добавлено: 21.02.04 02:04
Вроде ж ВБ не поддерживает потоков. Хотя у людей вроде были и рабочие примеры - поспрашивай на форуме.
Номер ответа: 7
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #7
Добавлено: 21.02.04 09:48
Номер ответа: 8
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #8
Добавлено: 21.02.04 14:45
Номер ответа: 9
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #9
Добавлено: 21.02.04 18:08
PS
На счет потоков, VB поддерживает и создание и работу спотоками, другое дело что бОльшая часть функций виртуальной машины VB при сврем вызове, закрывают процесс, с вывалившейся ошибкой... (Тут статья была, так там было написано, что если, к примеру, из др. потока вызвать MsgBox(), то прога "вывалится", но если же воспользоваться API аналогом этой функции, то все проходит чисто...)
Номер ответа: 10
Автор ответа:
Дмитрий Щапов
Вопросов: 71
Ответов: 321
Профиль | | #10
Добавлено: 21.02.04 21:02
Номер ответа: 11
Автор ответа:
Дмитрий Щапов
Вопросов: 71
Ответов: 321
Профиль | | #11
Добавлено: 21.02.04 22:45
Номер ответа: 12
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #12
Добавлено: 22.02.04 12:22
tweakvb.com. Там написано, что он делает.
Номер ответа: 13
Автор ответа:
CyRax Shadow
ICQ: 204447456
Вопросов: 0
Ответов: 7
Web-сайт:
Профиль | | #13
Добавлено: 23.02.04 00:43