2017-07-02 66 views
-2

所以我把這一切全部放在一個每80毫秒運行一次的定時器中,由於某種原因,當這個函數激活時,它有時候會卡住,並且即使我沒有按住左鍵點擊也會繼續。我也嘗試添加第二個檢查(clickdone),但它仍然在做。這裏是什麼造成的,我認爲是延遲,但我需要延遲,所以如果任何人在這裏可以通過添加另一個檢查或者修復這個問題的東西來幫助我,這將不勝感激!這裏是我的代碼:不知道是什麼原因造成的

Sub MyDelay() 
    Dim randomlul As New Random 
    Dim ezdelay As Integer 
    ezdelay = randomlul.Next(private delay, private delay) 

    Dim iCount As Integer = 1 
    For iCount = 1 To ezdelay 
     iCount = iCount + 1 
    Next 
End Sub 

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick 
    If CheckBox2.Checked = True Then 
     hotkey = GetAsyncKeyState(Keys.LButton) 
     If CBool(hotkey) Then 
      If (clickdone = True) Then 
       mouse_event(mouse_downclick, 0, 0, 0, 0) 
       clickdone = False 
       MyDelay() 
       clickdone = True 
       mouse_event(mouse_upclick, 0, 0, 0, 0) 
      End If 
      End If 
     End If 
End Sub 

這是不是被掛該職位的副本,我試過其他的解決方案,但它所以現在搞砸了我的其他功能我必須做出哪些犯規搞砸計數延遲其他功能,但現在的問題是,getasynckey狀態不斷循環有時

+0

對於延遲的循環是可怕的。看看['Threading.Thread.Sleep'](https://msdn.microsoft.com/en-us/library/d00bd51t(v = vs.110).aspx)而不是 – freefaller

+0

我不確定,但也許是第一個'Sub'應該是'Public Sub'.Maybe – TGamer

+0

嘗試調用鼠標點擊Me.Buttons – TGamer

回答

0

它卡住的原因是因爲GetAsyncKeyState()讀取虛擬鼠標和鍵盤輸入流,而不是物理鍵的狀態。因此,代碼將繼續執行,因爲它會注意到輸入流中的更多點擊。

previous answer of mine所述,您必須將鼠標點擊作爲窗口消息發送,因爲它們不會被GetAsyncKeyState()注意到。

EDIT(2017年7月31日):
我不贊成我MouseInputHelper類和我經常InputHelper類合併它。放心,功能仍然是一樣的。

下載InputHelper從我的GitHub庫:
https://github.com/Visual-Vincent/InputHelper/releases

您應該能夠使用此類似:

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick 
    If InputHelper.Keyboard.IsKeyDown(Keys.LButton) Then 
     InputHelper.WindowMessages.SendMouseClick(Windows.Forms.MouseButtons.Left, Cursor.Position, True, True) 

     'Do stuff here... 

     InputHelper.WindowMessages.SendMouseClick(Windows.Forms.MouseButtons.Left, Cursor.Position, False, True) 
    End If 
End Sub 
+0

評論是不適合擴展討論;這個對話已經[轉移到聊天](http://chat.stackoverflow.com/rooms/148803/discussion-on-answer-by-visual-vincent-not-sure-what-is-causing-this)。 –

相關問題