FORM:
'安装一个钩子过程,监视鼠标消息
Private Const WH_MOUSE As Long = 7
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SetWindowsHookEx Lib "user32.dll" 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.dll" (ByVal hHook As Long) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Private Sub Form_Load()
Dim PID As Long, TID As Long, F As Long
Shell "notepad"
F = FindWindow("Notepad", "无标题 - 记事本")
TID = GetWindowThreadProcessId(F, PID)
hHook = SetWindowsHookEx(WH_MOUSE, AddressOf MouseProc, App.hInstance, TID)
End SubPrivate Sub Form_Unload(Cancel As Integer)
Call UnhookWindowsHookEx(hHook)
End Sub模块:Option Explicit
Private Const WM_MOUSEMOVE As Long = &H200
Private Const WM_MOUSEWHEEL As Long = &H20APrivate Const HC_ACTION As Long = 0
Private Const HC_NOREMOVE As Long = 3Private Type POINTAPI
    pX As Long
    pY As Long
End TypePrivate Type MOUSEHOOKSTRUCT
    pt As POINTAPI
    hwnd As Long
    wHitTestCode As Long
    dwExtraInfo As Long
End TypePrivate Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)Private Declare Function CallNextHookEx Lib "user32.dll" (ByVal hHook As Long, ByVal nCode As Long, ByVal wParam As Long, ByRef lParam As Any) As LongPublic hHook As LongFunction MouseProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
'wParam 参数说明了鼠标消息的标识
'lParam 参数为一个指向 MOUSEHOOKSTRUCT 结构的指针
Dim MHS As MOUSEHOOKSTRUCT
Select Case nCode
    Case Is < 0
    Case HC_ACTION 'wParam 和 lParam 参数包含了鼠标消息
        CopyMemory MHS, ByVal lParam, Len(MHS)
        With frmMain.lstMouse
            Select Case wParam
                Case WM_MOUSEMOVE
                    .AddItem "鼠标移动 X:" & MHS.pt.pX & vbTab & " Y:" & MHS.pt.pY, 0
                Case WM_MOUSEWHEEL
                    .AddItem "滚轮滚动", 0
            End Select
        End With
    'Case HC_NOREMOVE
        'wParam 和 lParam 参数包含了鼠标消息
        '且消息不从消息队列里面移除(但也正因为不移除,所以会引起无限循环...)
End Select
MouseProc = CallNextHookEx(hHook, nCode, wParam, ByVal lParam)
End Function我用了一些代码来修改,我就想钩到记事本的鼠标消息,但是一运行,记事本就出错了
请高手指点,谢谢