鼠标不一定在本窗口,可能在WINDOWS任何一个程序下。只需要在鼠标任何时候点击了一下时纪录它点击了就好。
能纪录位置更好~~~
望赐教啊

解决方案 »

  1.   

    鼠标点击事件用 MouseDown 时间,但鼠标点击有左右键或左中右键,这用参数Button返回值          //记录鼠标位置代码
    Private Sub Form_MouseMove(Button As Integer,Shift As Integer,x As Singler, y As Single)
    Text1.Text="x="& x &"y=" &y
    End Sub
      

  2.   

    模块:
    Option Explicit
    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
    Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
    Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal nCode As Long, ByVal wParam As Long, lparam As Any) As Long
    Public Const HC_ACTION = 0
    Public Const WH_MOUSE_LL As Long = 14
    Public Const WM_LBUTTONDOWN = &H201
    Public Const WM_LBUTTONUP = &H202
    Private Type POINTAPI
        X As Long
        Y As Long
    End Type
    Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
    Public hHook As LongPublic Sub EnableHook()
    If hHook = 0 Then
       hHook = SetWindowsHookEx(WH_MOUSE_LL, AddressOf HookProc, App.hInstance, 0)
    End If
    End Sub
    Public Sub FreeHook()
    If hHook <> 0 Then
       Call UnhookWindowsHookEx(hHook)
       hHook = 0
    End If
    End SubPublic Function HookProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lparam As Long) As Long
        If nCode < 0 Then
           HookProc = CallNextHookEx(hHook, nCode, wParam, lparam)
           Exit Function
        End If
        If wParam = WM_LBUTTONDOWN Then
            Dim PT As POINTAPI
            GetCursorPos PT
            Form1.Caption = "mouse click at " + CStr(PT.X) + "," + CStr(PT.Y)
        End If
        HookProc = 0 '令待完成的動作繼續完成,若為1,則取消原本要完成的動作
    End Function
    窗体(form1):
    Option Explicit
    Const HWND_TOPMOST = -1
    Const HWND_NOTOPMOST = -2
    Const SWP_NOSIZE = &H1
    Const SWP_NOMOVE = &H2
    Const SWP_NOACTIVATE = &H10
    Const SWP_SHOWWINDOW = &H40
    Private Declare Sub SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long)Private Sub Form_Activate()
        SetWindowPos Me.hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE
    End Sub
    Private Sub Form_Load()
        EnableHook
    End SubPrivate Sub Form_Unload(Cancel As Integer)
        FreeHook
    End Sub
      

  3.   

    简单解释一下,用的是WH_MOUSE_LL钩子,这个全局钩子比较特殊,它特殊在不需要dll,其它的就没什么可说的了,和处理其它的钩子没什么区别
      

  4.   

    楼上的果真牛人也,代码收藏,我也凑个热闹,来个,录制鼠标移动的代码:
    四个按钮cmdRecord,cmdStop,cmdPlay,cmdNew。一个HScroll,hscrlSpeed。
    下面是代码
    Option ExplicitPrivate Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
    Private Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)Private Type POINTAPI
            X As Long
            Y As Long
    End Type
    Private I As Long
    Private sMouseArray() As StringPrivate Sub cmdNew_Click() '新建
    cmdStop.Enabled = False
    tmrMouse.Enabled = False
    cmdRecord.Enabled = True
    cmdPlay.Enabled = False
    I = 0
    End SubPrivate Sub cmdPlay_Click() '播放
    Dim J As Long
    Dim lPlay As Long
    Dim lX As Long
    Dim lY As Long
    Dim sSplit() As String
    lPlay = IFor J = 1 To lPlay
        sSplit = Split(sMouseArray(J - 1))
        lX = CLng(sSplit(0))
        lY = CLng(sSplit(1))
        Sleep hscrlSpeed.Value
        SetCursorPos lX, lY
    Next JEnd SubPrivate Sub cmdRecord_Click() '录制
    cmdStop.Enabled = True
    tmrMouse.Enabled = True
    cmdRecord.Enabled = False
    cmdNew.Enabled = False
    End SubPrivate Sub cmdStop_Click() '停止录制
    cmdStop.Enabled = False
    tmrMouse.Enabled = False
    cmdPlay.Enabled = True
    cmdNew.Enabled = True
    End SubPrivate Function RecordMouse() As String '
    Dim mouse As POINTAPI
    GetCursorPos mouse
    RecordMouse = mouse.X & " " & mouse.Y
    End FunctionPrivate Sub Form_Load()End SubPrivate Sub hscrlSpeed_Scroll()
    lblSpeed.Caption = "Speed: " & hscrlSpeed.Value
    End SubPrivate Sub tmrMouse_Timer()
    ReDim Preserve sMouseArray(I)
    sMouseArray(I) = RecordMouse
    I = I + 1
    End Sub
      

  5.   

    rainstormmaster(暴风雨 v2.0) 的代码会造成鼠标的短暂停顿,为什么?如何解决?
      

  6.   

    !学习◎!谁来说说Maxthon上的鼠标手势功能怎么做的?期盼~~