module: ----------------- Option Explicit Declare Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Declare Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long Declare Function CallWindowProc Lib "User32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Public Const WM_LBUTTONDOWN = &H201 Public Const GWL_WNDPROC = (-4) Public preWinProc As Long Public Function Wndproc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long If Msg = WM_LBUTTONDOWN Then '屏蔽鼠标左键 Exit Function ' Else Wndproc = CallWindowProc(preWinProc, hwnd, Msg, wParam, lParam) End If End Function------------------------- in form1 Option ExplicitPrivate Sub Command1_Click() MsgBox "you click command1" End SubPrivate Sub Form_Click() MsgBox "you click form1" End SubPrivate Sub Form_Load() Dim ret As Long preWinProc = GetWindowLong(Me.hwnd, GWL_WNDPROC) ret = SetWindowLong(Form1.hwnd, GWL_WNDPROC, AddressOf Wndproc) '如果把Form1.hwnd改为Command1.hwnd则屏蔽Command1上鼠标左键 End SubPrivate Sub Form_Unload(Cancel As Integer) Dim ret As Long ret = SetWindowLong(Me.hwnd, GWL_WNDPROC, preWinProc) '这一句不可少,他可以恢复鼠标左键,在适当需要的地方加上它。 End Sub
-----------------
Option Explicit
Declare Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Declare Function CallWindowProc Lib "User32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public Const WM_LBUTTONDOWN = &H201
Public Const GWL_WNDPROC = (-4)
Public preWinProc As Long
Public Function Wndproc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If Msg = WM_LBUTTONDOWN Then '屏蔽鼠标左键
Exit Function '
Else
Wndproc = CallWindowProc(preWinProc, hwnd, Msg, wParam, lParam)
End If
End Function-------------------------
in form1
Option ExplicitPrivate Sub Command1_Click()
MsgBox "you click command1"
End SubPrivate Sub Form_Click()
MsgBox "you click form1"
End SubPrivate Sub Form_Load()
Dim ret As Long
preWinProc = GetWindowLong(Me.hwnd, GWL_WNDPROC)
ret = SetWindowLong(Form1.hwnd, GWL_WNDPROC, AddressOf Wndproc)
'如果把Form1.hwnd改为Command1.hwnd则屏蔽Command1上鼠标左键
End SubPrivate Sub Form_Unload(Cancel As Integer)
Dim ret As Long
ret = SetWindowLong(Me.hwnd, GWL_WNDPROC, preWinProc) '这一句不可少,他可以恢复鼠标左键,在适当需要的地方加上它。
End Sub