Что нового

Последовательное нажатие клавиш.

AlexOsscr

Новичок
Сообщения
6
Репутация
0
Здравствуйте.
Помогите написать скрипт. Я сам не умею.
Нужно
Зажимаю клавишу "0" он начинает воспроизводить последовательность клавиш
"9 нажатие" удержание 100мс "9 отпускание"
простой 100мс
"8 нажатие" удержание 100мс "8 отпускание"
простой 100мс
"7 нажатие" удержание 100мс "7 отпускание"
простой 100мс
"6 нажатие" удержание 100мс "6 отпускание"
простой 100мс
"5 нажатие" удержание 100мс "5 отпускание"
простой 100мс
"4 нажатие" удержание 100мс "4 отпускание"
простой 100мс
"3 нажатие" удержание 100мс "3 отпускание"
простой 100мс
"2 нажатие" удержание 100мс "2 отпускание"
простой 100мс
"1 нажатие" удержание 100мс "1 отпускание"
простой 100мс

Главное чтоб при отпускании клавиши "0" он тут же останавливался даже если полностью не был воспроизведен, а при следующем нажатии начинал все заново.
Но если клавиша "0" зажата по завершении скрипта то надо чтоб он начинал воспроизводить сначала и так пока не будет отжата клавиша.
Клавиши 0,9,8,7, и т.д. это для примера, будут другие буквы и цифры.
Спасибо за Вашу помощь.

Вот что я пробывал сделать... Конечно получилась фигня...

Код:
HotKeySet("{Z}", "_Exit")
While 1
If _IsPressed({0})
Send("{9 down}")
Sleep(100)
Send("{9 up}")
Sleep(100)
Send("{8 down}")
Sleep(100)
Send("{8 up}")
Sleep(100)
Send("{7 down}")
Sleep(100)
Send("{7 up}")
Sleep(100)
Send("{6 down}")
Sleep(100)
Send("{6 up}")
Sleep(100)
Send("{5 down}")
Sleep(100)
Send("{5 up}")
Sleep(100)
Send("{4 down}")
Sleep(100)
Send("{4 up}")
Sleep(100)
Send("{3 down}")
Sleep(100)
Send("{3 up}")
Sleep(100)
Send("{2 down}")
Sleep(100)
Send("{2 up}")
Sleep(100)
Send("{1 down}")
Sleep(100)
Send("{1 up}")
Sleep(100)
EndIf
WEnd
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
Код:
;~ AutoIt Version: 3.3.14.5
;~ Author:         Tempo
#include <Misc.au3>

Global $g_aSend[][] = [[0], _
        ['{9 down}', 100], _ ; send & sleep
        ['{9 up}', 0], _
        ['{8 down}', 100], _
        ['{8 up}', 0], _
        ['{7 down}', 100], _
        ['{7 up}', 0], _
        ['{6 down}', 100], _
        ['{6 up}', 0], _
        ['{5 down}', 100], _
        ['{5 up}', 0], _
        ['{4 down}', 100], _
        ['{4 up}', 0], _
        ['{3 down}', 100], _
        ['{3 up}', 0], _
        ['{2 down}', 100], _
        ['{2 up}', 0], _
        ['{1 down}', 100], _
        ['{1 up}', 0]]
$g_aSend[0][0] = UBound($g_aSend) - 1

Opt('TrayAutoPause', 0)
HotKeySet('0', work)
HotKeySet('z', close)

While True
    Sleep(10)
WEnd

Func work()
    Local Static $s_bPressed = False
    If $s_bPressed Then Return

    $s_bPressed = True
    While True
        For $i = 1 To $g_aSend[0][0]
            If _IsPressed(30) Then
                Send($g_aSend[$i][0])
                If $g_aSend[$i][1] > 0 Then Sleep($g_aSend[$i][1])
            Else
                ExitLoop 2
            EndIf
        Next
    WEnd
    $s_bPressed = False
EndFunc   ;==>work

Func close()
    Exit
EndFunc   ;==>close
 
Последнее редактирование:
Автор
A

AlexOsscr

Новичок
Сообщения
6
Репутация
0
Код:
#include <Misc.au3>

Global $g_aSend[][] = [[0], _
        ['{9 down}', 100], _ ; send & sleep
        ['{9 up}', 0], _
        ['{8 down}', 100], _
        ['{8 up}', 0], _
        ['{7 down}', 100], _
        ['{7 up}', 0], _
        ['{6 down}', 100], _
        ['{6 up}', 0], _
        ['{5 down}', 100], _
        ['{5 up}', 0], _
        ['{4 down}', 100], _
        ['{4 up}', 0], _
        ['{3 down}', 100], _
        ['{3 up}', 0], _
        ['{2 down}', 100], _
        ['{2 up}', 0], _
        ['{1 down}', 100], _
        ['{1 up}', 0]]
$g_aSend[0][0] = UBound($g_aSend) - 1

Opt('TrayAutoPause', 0)
HotKeySet('0', work)
HotKeySet('z', close)

While True
    Sleep(10)
WEnd

Func work()
    Local Static $s_bPressed = False
    If $s_bPressed Then Return

    $s_bPressed = True
    While True
        For $i = 1 To $g_aSend[0][0]
            If _IsPressed(30) Then
                Send($g_aSend[$i][0])
                If $g_aSend[$i][1] > 0 Then Sleep($g_aSend[$i][1])
            Else
                ExitLoop 2
            EndIf
        Next
    WEnd
    $s_bPressed = False
EndFunc   ;==>work

Func close()
    Exit
EndFunc   ;==>close
Спасибо.
 
Верх