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