DLL

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
studen'
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 14.01.2004 (Ср) 23:43

DLL

Сообщение studen' » 03.02.2004 (Вт) 12:54

Объява ДЛЛ (не активХ) через Declare - это понятно. Но, есть же LoadLibrary. Можно как-то через нее подгружать библиотеку динамически, вернее манипулятор она возвращает, а как вызывать функции, через что?
Заранее всем спасибо!

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 03.02.2004 (Вт) 15:28

Можно через:

Код: Выделить всё
Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long


Нужно передать указатель на функцию, все лишнее забей нулями. 0&.

Вот пример:

Код: Выделить всё
Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Any, ByVal wParam As Any, ByVal lParam As Any) As Long
Private Sub Form_Load()
    On Error Resume Next
    Dim lb As Long, pa As Long
    lb = LoadLibrary("user32")
    pa = GetProcAddress(lb, "SetWindowTextA")
    CallWindowProc pa, Me.hWnd, "Hello !", ByVal 0&, ByVal 0&
    FreeLibrary lb
End Sub


Наслаждайся.
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 03.02.2004 (Вт) 16:48

РасшИрим, углУбим и обОзрим :)
Вложения
cFuncCall.zip
Динамическая загрузка библиотек
(1.73 Кб) Скачиваний: 76
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 03.02.2004 (Вт) 21:06

GSerg как всегда на высоте, как и его примеры :)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 04.02.2004 (Ср) 11:00

Столь лестного отзыва удостаивался лишь MEMBER (заслуженно), поэтому не могу не отметить, что это не мой пример :oops:
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

studen'
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 14.01.2004 (Ср) 23:43

Сообщение studen' » 04.02.2004 (Ср) 13:37

Это-то понятно, но ведь SetWindowTextA имеет параметры: HWND, Str. А как мне передать свои параметры себе в библиотеку. Например есть такая функция:
ParseText (Source$,Delimeter$). Нужно не ХВНД передавать а текст.

Vasya
Обычный пользователь
Обычный пользователь
 
Сообщения: 69
Зарегистрирован: 23.04.2002 (Вт) 16:49
Откуда: Togo

Сообщение Vasya » 05.02.2004 (Чт) 6:51

Ну не передавай хвнд, если не нужно.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

    TopList  
cron