Страница: 1 |
Страница: 1 |
Вопрос: как программно подключить библиотеку
Добавлено: 05.05.06 14:40
Автор вопроса: anna53
Подскажите, как программно подключить библиотеку - всего однин файлик dll. Есть какая-нить команда типа import или include?
Ответы
Всего ответов: 10
Номер ответа: 1
Автор ответа:
trialist
Вопросов: 14
Ответов: 76
Профиль | | #1
Добавлено: 05.05.06 15:01
Не понял вопроса. Если файл всего один то его при создании проги можно подключить, а программно... вроде как только Declare Function.
Если путь к файлу надо задавать во время работы проги то никак.
Номер ответа: 2
Автор ответа:
anna53
Вопросов: 4
Ответов: 4
Профиль | | #2
Добавлено: 05.05.06 15:04
При создании можно, конечно, но дело в том, что при переносе этой проги на другую машину, она уже не работает, т.к. ей не хватает библиотеки. А про Declare Function можно поподронее?
Номер ответа: 3
Автор ответа:
trialist
Вопросов: 14
Ответов: 76
Профиль | | #3
Добавлено: 05.05.06 15:10
Библиотека переносится вместе с прогой и копируется в Windows/System32
Declare Function FunctionNameInDLL "LLName.dll" (атрибуты функции)
Библиотека в одной папке с ЕХЕ.
Номер ответа: 4
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #4
Добавлено: 05.05.06 15:44
Полагаю, подразумевалась ActiveX библиотека, но вопрос лучше уточнить. В этом случае никаких Declare, просто эту библиотеку нужно перенести с программой и зарегистрировать.
Если путь к файлу надо задавать во время работы проги то никак.
Как это никак? А LoadLibrary?
Номер ответа: 5
Автор ответа:
anna53
Вопросов: 4
Ответов: 4
Профиль | | #5
Добавлено: 05.05.06 15:49
Не, это не ActiveX
Спасибо, я уже сделала через declare function.
Кстати с ActiveX можно как-нить также, не регистрируя ничего? Как использовать LoadLybrary?
Номер ответа: 6
Автор ответа:
orakul
ICQ: ----
Вопросов: 0
Ответов: 2
Web-сайт:
Профиль | | #6
Добавлено: 05.05.06 16:42
Можно зарегистрировать программно...
Номер ответа: 7
Автор ответа:
orakul
ICQ: ----
Вопросов: 0
Ответов: 2
Web-сайт:
Профиль | | #7
Добавлено: 05.05.06 16:49
Вот пример, бесполезный, но довольно понятно иллюстрирующий принцип работы LoadLibrary
Create a new project and add this code to Form1
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
'KPD-Team 1999
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@Allapi.net
'Здесь мы попытаемся вызвать АПИ-йункцмю не декларя ее!
Dim lb As Long, pa As Long
'загружаем user32 в адресное пространство нашего процесса
lb = LoadLibrary("user32"
'достаем адрес интересующей нас функции (SetWindowTextA)
pa = GetProcAddress(lb, "SetWindowTextA"
'Вызываем SetWindowTextA-function
CallWindowProc pa, Me.hWnd, "Hello !", ByVal 0&, ByVal 0&
'Не забыть выгрузить user32
FreeLibrary lb
End Sub
Номер ответа: 8
Автор ответа:
anna53
Вопросов: 4
Ответов: 4
Профиль | | #8
Добавлено: 06.05.06 09:31
Спсибо, буду разбираться.
Номер ответа: 9
Автор ответа:
Fever
Вопросов: 60
Ответов: 808
Профиль | | #9
Добавлено: 11.05.06 14:20
API By Name, sample in google
Номер ответа: 10
Автор ответа:
Vilor
Вопросов: 5
Ответов: 28
Профиль | | #10
Добавлено: 14.06.06 23:03
Regsvr32.exe %path%library.dll? И затем можно свободно декларировать функции из свежезарегестрированной библиотеки