什么应该在Autohotkey中使用`Sent`用于'SentInput`?

时间:2016-03-31 23:24:16

标签: autohotkey

Autohotkey documentation写道:

  

SendInput通常是发送击键和鼠标点击的首选方法,因为它具有出色的速度和可靠性。在大多数情况下,SendInput几乎是即时的,即使在发送长字符串时也是如此。由于SendInput速度非常快,因此它也更可靠,因为其他窗口可能会意外弹出并拦截击键。事实上,在SendInput期间用户输入的任何内容都被推迟到之后,可靠性得到进一步提高。

如果SendInput通常是首选,那么sent在ahk中更好的用例是什么? Sent何时赢得SentSentInput决定?

2 个答案:

答案 0 :(得分:1)

我通常使用SendInput,因为我喜欢几乎瞬时的输入。但是我遇到了一些实际限制:

  • 游戏等一些应用程序不喜欢这种快速击键,因为可能存在防止僵局的规则。

  • 有些应用程序无法快速处理接收击键,而且只会陷入困境。

  • 我有一个应用程序允许按Tab键在字段之间移动光标。

    • 当标记到字段时,应用程序需要时间来确认光标到达之前它将接受任何输入。 SendInput命令只是为了加快速度,并经常导致混合结果
    • 多次按Tab键也有问题,应用程序经常会遗漏一些标签,光标会以意外字段结束。
  • SendInput太快,无法重放某些内容以进行调试。例如,当我想观看文本如何插入到非常复杂的表单中的字段时。

  • 理论上Send你可以插入一个文本blob并随机按住shift键以增加输入字符时的熵。可以说,我无法想到为什么这会有用。

答案 1 :(得分:1)

只有当前设置出现问题时,才应考虑在SendPlaySendInput之间切换。如果在激活长宏时键入,则SendInput会导致问题。您的命令可能与宏混合导致意外行为。教程说SendPlay“在旧游戏中不受支持”,但我从来没有遇到过这方面的问题。有人可能会评论“你还没有使用过AHK”。也许。

此外,在从SendPlay切换到SendInput之前,您应该尝试将宏分成两部分。例如,Starcraft2中的“保存控制组,执行操作,召回控制组”失败。将其拆分为Send "save control group, do stuff"; Sleep 10; Send "recall control group";即可。