VB6.0怎么判断鼠标的左键被按下?

2025-06-25 23:35:46
推荐回答(1个)
回答1:

一、新建一个模块,复制下面代码:
Option Explicit

Public 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
Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Public Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal nCode As Long, ByVal wParam As Long, lParam As Any) As Long
Public Const WH_MOUSE_LL = 14

Public Const WM_LBUTTONDOWN = &H201
Public lHook(1) As Long

Public Function LowLevelMouseProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Dim fEatKeystroke As Boolean

Select Case wParam
Case WM_LBUTTONDOWN
Debug.Print "鼠标的左键被按下"
End Select

If fEatKeystroke Then
LowLevelMouseProc = -1
Else
LowLevelMouseProc = CallNextHookEx(0, nCode, wParam, ByVal lParam)
End If
End Function
二、调用举例:

Private Sub Form_Load()
lHook(1) = SetWindowsHookEx(WH_MOUSE_LL, AddressOf LowLevelMouseProc, App.hInstance, 0)
End Sub

Private Sub Form_Unload(Cancel As Integer)
UnhookWindowsHookEx lHook(1)
End Sub