2024年6月15日发(作者:)
VB 全局Hook鼠标钩子,获取鼠标单击左键、鼠标
坐标位置等。
以下是鼠标的按键消息:
键 按下 释放 按下(双击)
左 WM_NCLBUTTONDOWN=&HA1 WM_NCLBUTTONUP=&HA2 WM_NCLBUTTONDBLCLK=&HA3
中 WM_NCMBUTTONDOWN=&HA7 WM_NCMBUTTONUP=&HA8 WM_NCMBUTTONDBLCLK=&HA9
右 WM_NCRBUTTONDOWN=&HA4 WM_NCRBUTTONUP=&HA5 WM_NCRBUTTONDBLCLK=&HA6
form:
VBScript code复制代码
Private Sub Form_Load()
HooK
End Sub
Private Sub Form_Unload(Cancel As Integer)
UnHooK
End Sub
Module:
VBScript code复制代码
Private Declare Function CallNextHookEx Lib "user32" _
(ByVal hHook As Long, _
ByVal nCode As Long, _
ByVal wParam As Long, _
lParam As Any) As Long
Private Declare Function SetWindowsHookEx Lib "user32" _
Alias "SetWindowsHookExA" _
(ByVal idHook As Long, _
ByVal lpfn As Long, _
ByVal hmod As Long, _
ByVal dwThreadId As Long) As Long
Private Declare Function UnhookWindowsHookEx Lib "user32" _
(ByVal hHook As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" _
Alias "RtlMoveMemory" _
(Destination As Any, _
Source As Any, _
ByVal Length As Long)
Private Type POINTAPI
x As Long
y As Long
End Type
Private Type MSLLHOOKSTRUCT
pt As POINTAPI
mouseData As Long
Flags As Long
time As Long
dwExtraInfo As Long
End Type
Private Const WM_LBUTTONUP = &H202
Private Const WH_MOUSE_LL = 14
Private hHook As Long
Public Function MouseHook(ByVal nCode As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
Dim mhs As MSLLHOOKSTRUCT, pt As POINTAPI
If wParam = WM_LBUTTONUP Then
Call CopyMemory(mhs, ByVal lParam, LenB(mhs))
pt =
Call CopyMemory(p, ByVal lParam, Len(p))
"左键单击 坐标:" & pt.x & " "; pt.y
End If
Call CallNextHookEx(hHook, nCode, wParam, lParam)
End Function
Public Sub HooK()
hHook = SetWindowsHookEx(WH_MOUSE_LL, AddressOf MouseHook,
nce, 0)
End Sub
Public Sub UnHooK()
Call UnhookWindowsHookEx(hHook)
End Sub
发布评论