请问如何实现鼠标一旦移动就停止运行一个函数,而鼠标一旦静止10秒就运行这个函数

解决方案 »

  1.   

    用一个timer控件,在timer1_timer事件中GetCursorPos,一旦有变化说明鼠标移动了
      

  2.   

    如果不用timer控件可以实现吗
      

  3.   

    http://support.microsoft.com/kb/q183107/
      

  4.   

    上面那个官方的例子是C,不是VB阿~
      

  5.   

    要捕捉鼠标是否移动,在timer中作最简单的了
    其他的方法应该也有的吧,hook鼠标事件事件之类的
    这方面不是很熟,有待查找资料
      

  6.   

    VB6实现键盘鼠标全局Hook
    http://blog.csdn.net/Modest/archive/2006/10/21/1344213.aspx
      

  7.   

    个人观点用鼠标全局Hook最为理想了
      

  8.   

    一个记录鼠标位置的代码,楼主可以参考一下一个HScroll: hscrlSpeed
    四个command: cmdRecord cmdStop cmdPlay cmdNew
    一个Timer: tmrMouse
    一个Label:lblSpeed
    下面是代码:
    Private 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_Change()
    lblSpeed.Caption = "Speed: " & hscrlSpeed.Value
    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