在尝试使 AHK 脚本更有效的同时,保留其正确的按键输入功能的问题

在尝试使 AHK 脚本更有效的同时,保留其正确的按键输入功能的问题

有什么好方法可以将较长的脚本重新组织为更高效的解决方案并保留相同的功能?我认为使用 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% 达到目标,但会给您一些值得尝试的东西......

相关内容