有什么好方法可以将较长的脚本重新组织为更高效的解决方案并保留相同的功能?我认为使用 While 循环的上述解决方案可以解决问题,但现在按键的输入在某种程度上发生了冲突,我不再理解了。
有没有更好的替代方法来重新创建较长脚本的功能?
我想知道是否有必要在数组中定义键,然后检索每个按下或按下的键的输入,但我不确定 AutoHotkey 的正确语法。
$Up::
$Down::
$Left::
$Right::
While, GetKeyState(LTrim(A_ThisHotkey, "$"), "P")
{
SendInput, % "{" . LTrim(A_ThisHotkey, "$") . " down}"
ControlSend,, % "{" . LTrim(A_ThisHotkey, "$") . " down}"
}
SendInput, % "{" . LTrim(A_ThisHotkey, "$") . " up}"
ControlSend,, % "{" . LTrim(A_ThisHotkey, "$") . " up}"
Return
Up::
SendInput {Up down}
ControlSend,, {Up down}
Return
Up up::
SendInput {Up up}
ControlSend,, {Up up}
Return
Down::
SendInput {Down down}
ControlSend,, {Down down}
Return
Down up::
SendInput {Down up}
ControlSend,, {Down up}
Return
Left::
SendInput {Left down}
ControlSend,, {Left down}
Return
Left up::
SendInput {Left up}
ControlSend,, {Left up}
Return
Right::
SendInput {Right down}
ControlSend,, {Right down}
Return
Right up::
SendInput {Right up}
ControlSend,, {Right up}
Return
答案1
您可以查看以下一些内容:
- 使其成为每个热键调用的函数(而不是在主脚本中执行的一组代码)
- 通过 --this 调用
SetTimer
可以将事物放在单独的线程中 - 查看
Critical
命令——这可能有助于您了解什么可以被中断或不能被中断(以及后续热键中断如何在您的代码设置上起作用)
这些可能实际上并不能让您 100% 达到目标,但会给您一些值得尝试的东西......