在新的VB6项目中,为了实例化LoadLibrary,首先在Form1上添加以下代码:
Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As LongPrivate Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As LongPrivate Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As LongPrivate 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 lbEnd Sub扩展资料LoadLibrary