在VB6中似乎得到了虚假的鼠标点击事件

在VB6中似乎得到了虚假的鼠标点击事件,vb6,mouse,mousemove,Vb6,Mouse,Mousemove,我正在尝试构建一个程序,计算上次单击鼠标后的时间(并在给定的不活动间隔后执行一些操作)。不幸的是,鼠标点击事件似乎经常发生。txtLastMouseMove每秒不断更新以显示当前时间,而txtTimeSinceMouseMove从不超过1,通常为0 计时器1设置为100毫秒。将其设置为更长的间隔会减慢更新速度,但它们仍然无法正确计数 我错过了什么?为什么鼠标左键事件持续发生 ' Detect mouse clicks. Private Declare Function GetAsyncKeySt

我正在尝试构建一个程序,计算上次单击鼠标后的时间(并在给定的不活动间隔后执行一些操作)。不幸的是,鼠标点击事件似乎经常发生。txtLastMouseMove每秒不断更新以显示当前时间,而txtTimeSinceMouseMove从不超过1,通常为0

计时器1设置为100毫秒。将其设置为更长的间隔会减慢更新速度,但它们仍然无法正确计数

我错过了什么?为什么鼠标左键事件持续发生

' Detect mouse clicks.
Private Declare Function GetAsyncKeyState Lib "User32" (ByVal vKey As Long) As Integer

Private Type POINTAPI
    x As Long
    y As Long
End Type

' Detect mouse clicks.
Private Sub Timer1_Timer()

    Dim Ret                          As Integer
    Static datLastMouseMove     As Date
    Dim datThisMouseMove         As Date

    if (datLastMouseMove=0) then datLastMouseMove=now()

    Ret = GetAsyncKeyState(1) 'vbKeyLButton = 1
    If Ret < 1 Then
        ' The left mouse button was clicked.
        datThisMouseMove = Now()
        txtLastMouseMove.Text = Format(datThisMouseMove, "hh:mm:ss")
        txtTimeSinceMouseMove = Format(datThisMouseMove - datLastMouseMove, "hh:mm:ss")
        If ((datThisMouseMove - datLastMouseMove) * 24 * 60 * 60 > CDbl(txtInterval)) Then
            MsgBox "Mouse has not moved in " & Format(datThisMouseMove - datLastMouseMove, "hh:mm:ss")
        End If
        datLastMouseMove = datThisMouseMove
    End If
End Sub
检测鼠标点击。 将私有函数GetAsyncKeyState Lib“User32”(ByVal vKey长度)声明为整数 私有类型POINTAPI x尽可能长 只要 端型 '检测鼠标点击。 专用子定时器1_Timer() Dim Ret作为整数 静态datLastMouseMove作为日期 Dim datThisMouseMove As Date 如果(datLastMouseMove=0),则datLastMouseMove=now() Ret=GetAsyncKeyState(1)'vbKeyLButton=1 如果Ret<1,则 '单击了鼠标左键。 datThisMouseMove=Now() Text=格式(datThisMouseMove,“hh:mm:ss”) txtTimeSinceMouseMove=格式(datThisMouseMove-datLastMouseMove,“hh:mm:ss”) 如果((datThisMouseMove-datLastMouseMove)*24*60*60>CDbl(txtInterval)),则 MsgBox“鼠标未移动”&格式(datThisMouseMove-datLastMouseMove,“hh:mm:ss”) 如果结束 datLastMouseMove=datThisMouseMove 如果结束 端接头 别担心,我很愚蠢

“如果Ret<1,则”在未单击鼠标按钮时触发。应改为“如果是,那么”