小弟入门不久,请给个实例代码!谢谢!
追答比如:
'Module里的代码:
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private 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
Private Const GWL_WNDPROC = (-4)
Private Const WM_CLOSE = &H10
Private Const WM_KEYDOWN = &H100
Private Const WM_KEYUP = &H101
Private Const WM_LBUTTONDBLCLK = &H203
Private Const WM_LBUTTONDOWN = &H201
Private Const WM_LBUTTONUP = &H202
Private Const WM_RBUTTONDBLCLK = &H206
Private Const WM_RBUTTONDOWN = &H204
Private Const WM_RBUTTONUP = &H205
Private Const WM_MOUSEMOVE = &H200
Private Const WM_MOVE = &H3
Private Const WM_PAINT = &HF
Public lhWnd As Long, oldProc As Long
Public b As Boolean
'子类化过程
Public Function SubHook(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
b = True
'处理消息
Select Case Msg
Case WM_LBUTTONUP
Form1.Print "123"
Case Else
End Select
If b Then SubHook = CallWindowProc(oldProc, lhWnd, Msg, wParam, lParam)
End Function
'开始子类化
Public Sub StartSubHook(hWnd As Long)
lhWnd = hWnd: oldProc = SetWindowLong(hWnd, GWL_WNDPROC, AddressOf SubHook)
End Sub
'结束子类化
Public Sub EndSubHook()
Call SetWindowLong(lhWnd, GWL_WNDPROC, oldProc)
End Sub
'Form1里的代码:
Private Sub Form_Load()
Call StartSubHook(Me.hWnd)
End Sub
Private Sub Form_Unload(Cancel As Integer)
Call EndSubHook
End Sub
小弟入门不久,请给个实例代码!谢谢!
本回答被提问者采纳