Автоматический запуск функции, если клавиша нажата три раза за ограниченное время

#windows #button #keyboard #autoit

#Windows #кнопка #клавиатура #автозапуск

Вопрос:

У меня есть этот код до сих пор:

 #include <Misc.au3>
While True
    If _IsPressed(57) Then
        Sleep(100)
        If Not _IsPressed(57) Then
            Sleep(100)
            If _IsPressed(57) Then
                Sleep(100)
                If Not _IsPressed(57) Then
                    Sleep(100)
                    If _IsPressed(57) Then
                        Sleep(100)
                        If Not _IsPressed(57) Then
                            up()
                        EndIf
                    EndIf
                EndIf
            EndIf
        EndIf
    EndIf
WEnd

Func up()
   Send("{w down}")
   Sleep(10000)
   Send("{w up}")
   Sleep(500)
EndFunc
  

Проблема в том, что она будет работать только несколько раз, и она темпераментна. Кто-нибудь знает, как я мог бы заставить ее работать каждый раз, а не только несколько раз.

Ответ №1:

Это может быть то, что вы ищете.

 HotKeySet("a", "pressed")
Dim $i = 0, $PushTime = 1000

While 1
    Sleep(100)
WEnd

Func pressed()
    $i  = 1
    Sleep($PushTime)
    Switch $i
        Case 1
            put(1)
        Case 2
            put(2)
        Case 3
            put(3)
        Case 4
            Exit (0)
    EndSwitch
    $i = 0
EndFunc   ;==>pressed

Func put($y)
    MsgBox(0, "Func called: ", "Nr: " amp; $y)
EndFunc   ;==>put