正在做触摸屏查询系统,其中要是某人查询完信息以后没有返回主界面,那么下一个人再查询信息时,必须先返回主界面,才能查询自己的项目,能否实现一个系统级的判断,检测鼠标是否以停滞了我规定的时间,若以达到我规定的时间,那么返回主界面,也就是像屏幕保护的"等待时间",我不想窗体上检测鼠标移动事件,因为我的窗体上还有其他许多控件覆盖窗体.

解决方案 »

  1.   

    拦截鼠标移动的消息,再配合一个TIMER。这要用全局HOOK了,要配合VC写。
      

  2.   

    全局HOOK常常是很麻烦的事情,又很难办到(NT下常常只能Local Hook)。
      

  3.   

    form1上添加timer1,label1
    Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
    Private Type POINTAPI
            x As Long
            y As Long
    End TypePrivate t As DoublePrivate Sub Form_Load()
        
        Timer1.Interval = 1000
    End SubPrivate Sub Timer1_Timer()
        
        Static lpCursorPos As POINTAPI
        Dim lpPoint As POINTAPI
        
        GetCursorPos lpPoint
        If lpPoint.x <> lpCursorPos.x Or lpPoint.y <> lpCursorPos.y Then
            
            lpCursorPos.x = lpPoint.x
            lpCursorPos.y = lpPoint.y
            t = Timer
            Label1.Caption = "0"
        Else
            
            Label1.Caption = CStr(Int(Timer - t))
        End If
    End Sub
      

  4.   

    这类代码都有致命缺陷——午夜0:00BUG。
    大家不要忘了这点考虑到查询系统半夜也许不开,可以忽略。