У меня есть два сценария в AHK, оба запускаются "последовательностями клавиш" (b нажата дважды) и (1 нажата дважды), вот код
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
SetTitleMatchMode RegEx ; matchs apps windows names using RegEx
; Delay A between key sequence triggers
ARkeySeqDelayA := 250
; if Presets Panel is in 100%
; Y axis top in tool presets is 122 pixels
; Y axis gap between tool presets is 29 pixels
ARtoolPresetTopY := 125
ARtoolPresetGapY := 29
return
#If WinActive("ahk_class ArtRage 3")
b::
if Keyb_presses > 0 ; SetTimer already started, so we log the keypress instead.
{
Keyb_presses += 1
return
}
; Otherwise, this is the first press of a new series. Set count to 1 and start
; the timer:
Keyb_presses = 1
SetTimer, Keyb, -250 ; Wait for more presses within a 250 millisecond window.
return
Keyb:
if Keyb_presses = 1 ; The key was pressed once.
{
BlockInput, MouseMove
Send {b}
sleep 80
MouseClick, left, 195, 55
Sleep 200
MouseClick, left, 200, 85
BlockInput, MouseMoveOff
}
else if Keyb_presses = 2 ; The key was pressed twice.
{
BlockInput, MouseMove
Send {b}
sleep 80
MouseClick, left, 195, 55
Sleep 200
MouseClick, left, 200, 110
BlockInput, MouseMoveOff
}
; Regardless of which action above was triggered, reset the count to
; prepare for the next series of presses:
Keyb_presses = 0
return
1::
if Key1_presses > 0 ; SetTimer already started, so we log the keypress instead.
{
Key1_presses += 1
return
}
; Otherwise, this is the first press of a new series. Set count to 1 and start
; the timer:
Key1_presses = 1
SetTimer, Key1, -250 ; Wait for more presses within a 250 millisecond window.
return
Key1:
if Key1_presses = 1 ; The key was pressed once.
{
BlockInput, MouseMove
MouseClick, left, 13, ARtoolPresetTopY
BlockInput, MouseMoveOff
}
else if Key1_presses = 2 ; The key was pressed twice.
{
BlockInput, MouseMove
MouseClick, left, 13, ARtoolPresetTopY + (ARtoolPresetGapY * 8)
BlockInput, MouseMoveOff
}
; Regardless of which action above was triggered, reset the count to
; prepare for the next series of presses:
Key1_presses = 0
return
но каким-то образом, когда я запускаю сценарий "1", а затем через несколько секунд я хочу использовать сценарий "11", он не будет работать, если я сам нигде не щелкал ранее (вручную), кажется, что предыдущий сценарий AHK как-то все еще работает и нуждается во мне, чтобы закончить это, щелкнув себя в любом месте.
Также, когда я запускаю сценарий "bb", а затем через 1 секунду я хочу использовать сценарий "1", он не будет работать, опять же кажется, что AHK все еще выполняет сценарий previuos или что-то в этом роде, и мне нужно сделать Кликни сам, и тогда только тогда будет работать скрипт "1". Так что я не могу запускать сценарии "bb" и "1" один за другим (это то, что я всегда делаю, очень необходимо) без необходимости делать некоторые щелчки мышью между ними, как я могу избежать этого ??
после дальнейшего тестирования я заменяю все исполняемые части скрипта просто
Run C:\Users\myname\Desktop\AR4 bb.exe ; the same script done in a macro recorder
click up left
и я заметил, что проблема не устранена, так же как и способ, которым скрипт выполняет различие между одинарными и двойными нажатиями клавиш, которые мешают выполнению сценария два раза подряд. Если я нажму "b", подожду одну секунду, но не буду сам щелкать мышью, и нажму "bb" (b два раза), она выполнит "b", но если я сделаю несколько щелчков мышью с помощью myselft, то выполнит "bb". почему это происходит?
А что я могу сделать?? Есть ли какая-то команда, которую я мог бы добавить, чтобы сделать этот скрипт более отзывчивым?
Спасибо, Дополнительно.