----宣告二 --------------------------------------------------------------------- Declare Sub CopyMemory Lib "KERNEL32" Alias "RtlMoveMemory" ( _ lpvDest As Any, ByVal lpvSource As Long, ByVal cbCopy as Long)
这里还有另外一个做法,那就是从Hook Procedure的宣告著手,别忘了,Hook Pro cedure是Window所呼叫的,所以它传给我们定义的HookProc()时,第三个参数以先前的 举例来说便是传入25600,那麽,我们将HookProc()改定义成:
----------------------------------------------------------------------------- Function HookProc(ByVal code As Long, ByVal wParam As Long, _ lParam As Long) As Long ----------------------------------------------------------------------------- 第三个参数变成 ByRef的方式传入,所以了,用msg = lParam来取代CopyMemory的 作法, 嘛可以通啦!即如下:
----------------------------------------------------------------------------- Function HookProc(ByVal code As Long, ByVal wParam As Long, _ lParam As Long) As Long ''''lParam改成ByRef msg = lParam '''' CopyMemory msg, lParam, Lenb(msg) //这行可省啦 If (msg.message >= WM_KEYFIRST _ And msg.message <= WM_KEYLAST) Then Debug.Print msg.message, msg.paramH End If HookProc = CallNextHookEx(hHook, code, wParam, lParam) End Function -----------------------------------------------------------------------------