0
마우스를 마지막으로 클릭 한 이후 경과 된 시간을 계산하는 프로그램을 작성하려고합니다. 일정 시간 동안 사용하지 않으면 일정한 동작이 수행됩니다. 불행하게도, 마우스 클릭 이벤트는 끊임없이 발생합니다. txtLastMouseMove는 매초마다 현재 시간을 표시하도록 계속 업데이트되고 txtTimeSinceMouseMove는 1을 초과하지 않으며 대개 0입니다.VB6에서 가짜 마우스 클릭 이벤트가 발생하는 것 같습니다.
Timer1은 100ms로 설정됩니다. 더 긴 간격으로 설정하면 업데이트 속도가 느려지지만 여전히 제대로 계산되지 않습니다.
무엇이 여기에 있습니까? 왜 마우스 왼쪽 버튼 마우스 이벤트가 계속 발생합니까?
' 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