powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вызов функции из DLL
5 сообщений из 5, страница 1 из 1
Вызов функции из DLL
    #32405141
guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такой код:
lb = LoadLibrary("Lib1.DLL")
pa = GetProcAddress(lb, "Fun1")

Как теперь вызвать функцию Fun1?
В различных примерах в Интернете встречается либо вызов этой функции в отдельном процессе например hThread = CreateThread(ByVal 0&, 0&, pa, 0&, 0&, ThreadID) либо с помощью вызова процедуры окна CallWindowProc. А можно ли просто вызвать функцию имея ее адрес то есть Call pa?
...
Рейтинг: 0 / 0
Вызов функции из DLL
    #32405163
Фотография SergeySV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если ты знаешь имя функции и ее аргументы, то почему не хочешь использовать:
Declare Function NameFunction Lib "NameLibrary" Alias "AliasNameFun" (.......) As ....
...
Рейтинг: 0 / 0
Вызов функции из DLL
    #32405199
guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>Если ты знаешь имя функции и ее аргументы, то почему не хочешь использовать:
>>Declare Function NameFunction Lib "NameLibrary" Alias "AliasNameFun" (.......) As ....

потому что имя вызываемой функции определяется во время выполнения программы

другими словами - как можно разыменовать указатель на функцию полученый после вызова GetProcAddress?
...
Рейтинг: 0 / 0
Вызов функции из DLL
    #32405299
Фотография SergeySV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не нужно ждать от VB такой же логики в программировании линковки Dll как например у Delphi или Visual Си.

Прикол с VB заключается в том что он не различает статическую и динамическую подгрузку Dll библиотек.
Когда ты объявляешь: Declare Function NameFunction Lib ...... - это не значит, что твоя программа автоматом загрузит Dll при старте. Нифига. Она спокойно запустится даже если Dll вообще нет на компе, и только когды ты первый раз обратишься к функции из этой Dll, только тогда произойдет поиск и загрузка Dll.

Вообщем VB всячески скрывает (маскирует) работу с памятью и все делает сам, тебе не доверяет :)
...
Рейтинг: 0 / 0
Вызов функции из DLL
    #32407192
Фотография SergeySV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dim lb As Long, pa As Long
'map 'user32' into the address space of the calling process.
lb = LoadLibrary("user32")
'retrieve the address of 'SetWindowTextA'
pa = GetProcAddress(lb, "SetWindowTextA")
'Call the SetWindowTextA-function
CallWindowProc pa, Me.hWnd, "Hello !", ByVal 0&, ByVal 0&
'unmap the library's address
FreeLibrary lb
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вызов функции из DLL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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