Страница: 1 |
Страница: 1 |
Вопрос: Вызов функций через GetProcAddress
Добавлено: 08.09.07 22:33
Автор вопроса: Mr.Smile | ICQ: 427682013
Примерчик из Api-Guide:
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
'We're going to call an API-function, without declaring it!
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
End Sub
Приведите пожалуйста примеры по вызову функций с разным количеством параметров через GetProcAddress. Например функция
Ответы
Всего ответов: 13
Номер ответа: 1
Автор ответа:
Mr.Smile
ICQ: 427682013
Вопросов: 14
Ответов: 464
Профиль | | #1
Добавлено: 08.09.07 23:13
Ну вот! Нашёл что-то: http://www.vbnet.ru/articles/showarticle.aspx?id=204. Но как-то тут ядрёно всё. Вопрос остаётся в силе.
Номер ответа: 2
Автор ответа:
nguufxm6bo
Вопросов: 0
Ответов: 27
Профиль | | #2
Добавлено: 09.09.07 01:40
На, развлекайся.
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
'We're going to call an API-function, without declaring it!
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, "MessageBoxA"
'Call the SetWindowTextA-function
CallWindowProc pa, Me.hWnd, "Word!", ByVal "Hello", ByVal 0&
'unmap the library's address
FreeLibrary lb
End Sub
Номер ответа: 3
Автор ответа:
Mr.Smile
ICQ: 427682013
Вопросов: 14
Ответов: 464
Профиль | | #3
Добавлено: 09.09.07 14:10
Угу. Уже интересней. Спасибо. Давайте ещё примерчиков.
Номер ответа: 4
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #4
Добавлено: 09.09.07 21:10
http://www.yandex.ru/yandsearch?text=VB+%C2%FB%E7%EE%E2+%F4%F3%ED%EA%F6%E8%E8+%EF%EE+%F3%EA%E0%E7%E0%F2%E5%EB%FE&rpt=rad
Номер ответа: 5
Автор ответа:
Mr.Smile
ICQ: 427682013
Вопросов: 14
Ответов: 464
Профиль | | #5
Добавлено: 09.09.07 21:15
Есть-ли доработанный аттач к статье http://www.vbnet.ru/articles/showarticle.aspx?id=204? (Я имею ввиду с внесёнными в него изменениями комментатора)
Номер ответа: 6
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #6
Добавлено: 09.09.07 21:57
В статье первый и второй вариант наиболее подходящий для общих случаев. Когда автор статьи полез дальше - это привело к ряду недочётов, о которых и говорил комментатор. Вообщем оно того не стоит. Если хочеться вызывать по человечески - переходи на С++
Номер ответа: 7
Автор ответа:
Mr.Smile
ICQ: 427682013
Вопросов: 14
Ответов: 464
Профиль | | #7
Добавлено: 09.09.07 22:04
Языков так много, что я даже не знаю какой лучше. Например, в чём отличие C++ от C#? И какой язык более универсальный (например, драйвер написать, службу или консольное приложение)?
Номер ответа: 8
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #8
Добавлено: 09.09.07 22:12
Один ориентирован на бизнес приложения, а другой чтобы драйвер, службу написать...
Номер ответа: 9
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #9
Добавлено: 10.09.07 00:38
С++ — единственный универсальный язык, на котором можно написать (и пишут) вообще все. C# предназначен для веб-приложений и оконных программ под Windows, которые работают с технологиями MS.
Номер ответа: 10
Автор ответа:
Mr.Smile
ICQ: 427682013
Вопросов: 14
Ответов: 464
Профиль | | #10
Добавлено: 10.09.07 01:19
А версию Visual C++ не подскажете? Такую, более универсальную в плане ОС. Там, .Net, 2005, 5.0...
Номер ответа: 11
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #11
Добавлено: 10.09.07 19:50
2005
Номер ответа: 12
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #12
Добавлено: 13.09.07 18:10
для 6-го бэйсика тут есть в примерах ApiByNameEx
Номер ответа: 13
Автор ответа:
Mr.Smile
ICQ: 427682013
Вопросов: 14
Ответов: 464
Профиль | | #13
Добавлено: 15.09.07 20:01
Спасибо! Крутая вещь!