为什么小弟我用VB6+WH_Mouse_LL做的全局钩子,用CallNextHookEx不能把消息传递给下一个钩子
为什么我用VB6+WH_Mouse_LL做的全局钩子,用CallNextHookEx不能把消息传递给下一个钩子 - VC/MFC / 进程/线程/DLL
为什么我用VB6+WH_Mouse_LL做的全局钩子,用CallNextHookEx不能把消息传递给下一个钩子,代码如下:
--------------------------------------
modPub.bas:
Option Explicit
Public hSetWindowsHookEx As Long
Public Function LowLevelMouseProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Dim typMHS As MSLLHOOKSTRUCT
Dim pt As POINTAPI
Dim rectWindowPosSize As RECT
If nCode > = 0 Then
If wParam = WM_MOUSEMOVE Then
Call CopyMemory(typMHS, ByVal lParam, LenB(typMHS))
pt = typMHS.pt
With frmMain
.txtX = pt.X
.txtY = pt.Y
End With
End If
End If
Debug.Print CallNextHookEx(hSetWindowsHookEx, nCode, wParam, lParam)
' Debug.Print "CallNextHookEx: " & hSetWindowsHookEx
' CallNextHookEx hSetWindowsHookEx, nCode, wParam, lParam
' LowLevelMouseProc = CallNextHookEx(hSetWindowsHookEx, nCode, wParam, lParam)
Call CallNextHookEx(hSetWindowsHookEx, nCode, wParam, lParam)
' LowLevelMouseProc = CallNextHookEx(0, nCode, wParam, lParam)
End Function
--------------------------------------
frmMain.bas:
Option Explicit
Private Sub Form_Load()
hSetWindowsHookEx = SetWindowsHookEx(WH_MOUSE_LL, AddressOf LowLevelMouseProc, App.hInstance, 0)
End Sub
Private Sub Form_Unload(Cancel As Integer)
UnhookWindowsHookEx hSetWindowsHookEx
End Sub
--------------------------------------
modAPI.bas:
Option Explicit
'###################################################################################################################
'设置窗体位置
Public Declare Function SetWindowPos Lib "user32 " _
( _
ByVal hwnd As Long, _
为什么我用VB6+WH_Mouse_LL做的全局钩子,用CallNextHookEx不能把消息传递给下一个钩子,代码如下:
--------------------------------------
modPub.bas:
Option Explicit
Public hSetWindowsHookEx As Long
Public Function LowLevelMouseProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Dim typMHS As MSLLHOOKSTRUCT
Dim pt As POINTAPI
Dim rectWindowPosSize As RECT
If nCode > = 0 Then
If wParam = WM_MOUSEMOVE Then
Call CopyMemory(typMHS, ByVal lParam, LenB(typMHS))
pt = typMHS.pt
With frmMain
.txtX = pt.X
.txtY = pt.Y
End With
End If
End If
Debug.Print CallNextHookEx(hSetWindowsHookEx, nCode, wParam, lParam)
' Debug.Print "CallNextHookEx: " & hSetWindowsHookEx
' CallNextHookEx hSetWindowsHookEx, nCode, wParam, lParam
' LowLevelMouseProc = CallNextHookEx(hSetWindowsHookEx, nCode, wParam, lParam)
Call CallNextHookEx(hSetWindowsHookEx, nCode, wParam, lParam)
' LowLevelMouseProc = CallNextHookEx(0, nCode, wParam, lParam)
End Function
--------------------------------------
frmMain.bas:
Option Explicit
Private Sub Form_Load()
hSetWindowsHookEx = SetWindowsHookEx(WH_MOUSE_LL, AddressOf LowLevelMouseProc, App.hInstance, 0)
End Sub
Private Sub Form_Unload(Cancel As Integer)
UnhookWindowsHookEx hSetWindowsHookEx
End Sub
--------------------------------------
modAPI.bas:
Option Explicit
'###################################################################################################################
'设置窗体位置
Public Declare Function SetWindowPos Lib "user32 " _
( _
ByVal hwnd As Long, _