如何在VB6中使用LoadLibrary函数调用未声明的API函数?

如题所述

在新的VB6项目中,为了实例化LoadLibrary,首先在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

在Form_Load事件处理程序中,我们处理LoadLibrary和FreeLibrary的调用:



Private Sub Form_Load
On Error Resume Next
' 1999年,KPD-Team展示了如何间接调用未声明的API函数
Dim lb As Long, pa As Long

' 将'user32'库映射到调用进程的地址空间
lb = LoadLibrary("user32")

' 获取'SetWindowTextA'函数的地址
pa = GetProcAddress(lb, "SetWindowTextA")

' 通过CallWindowProc间接调用SetWindowTextA函数,向窗口发送消息 "Hello !"
CallWindowProc pa, Me.hWnd, "Hello !", 0, 0

' 解除库的地址映射
FreeLibrary lb
End Sub


扩展资料

LoadLibrary

温馨提示:答案为网友推荐,仅供参考