2014-04-01 2 views
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 

답변

1

신경 쓰지 마라, 나는 어리 석다.

"If Ret < 1 그러면 마우스 버튼을 클릭하지 않을 때마다 실행됩니다. "If Ret Then Then"이라고 읽어야합니다.