Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Вызов функций через GetProcAddress Добавлено: 08.09.07 22:33  

Автор вопроса:  Mr.Smile | ICQ: 427682013 
Примерчик из Api-Guide:
'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
    '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. Например функция
Private Declare Function CreateWindowEx Lib "user32" Alias "CreateWindowExA" (ByVal dwExStyle As Long, ByVal lpClassName As String, ByVal lpWindowName As String, ByVal dwStyle As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As Long, ByVal hMenu As Long, ByVal hInstance As Long, lpParam As Any) As Long

Ответить

  Ответы Всего ответов: 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-сайт: sharpc.livejournal.com
 Профиль | | #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-сайт: sharpc.livejournal.com
 Профиль | | #11
Добавлено: 10.09.07 19:50
2005

Ответить

Номер ответа: 12
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #12
Добавлено: 13.09.07 18:10
для 6-го бэйсика тут есть в примерах ApiByNameEx

Ответить

Номер ответа: 13
Автор ответа:
 Mr.Smile



ICQ: 427682013 

Вопросов: 14
Ответов: 464
 Профиль | | #13 Добавлено: 15.09.07 20:01
Спасибо! Крутая вещь!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам