Autohotkey 什么时候应该在自动热键中的“SentInput”上使用“Sent”?

Autohotkey 什么时候应该在自动热键中的“SentInput”上使用“Sent”?,autohotkey,Autohotkey,报告写道: SendInput通常是发送击键和鼠标单击的首选方法,因为它具有优越的速度和可靠性。在大多数情况下,SendInput几乎是瞬时的,即使在发送长字符串时也是如此。由于SendInput速度如此之快,它也更加可靠,因为其他窗口意外弹出并截获击键的机会更少。用户在SendInput期间键入的任何内容都会推迟到之后,这一事实进一步提高了可靠性 如果通常首选SendInput,那么在ahk中send更好的用例是什么?Sent何时赢得了Sent与SentInput的决定?我通常使用SendIn

报告写道:

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


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

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

  • 一些像游戏这样的应用程序不喜欢如此快速的按键,因为可能有禁止僵尸的规则

  • 有些应用程序无法处理这么快的按键接收,因此陷入了困境

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

    • 当在一个字段中使用tab键时,应用程序需要时间来确认光标的到达,然后才能接受任何输入。
      SendInput
      命令的速度太快,常常导致混合结果
    • 多次按tab键也有问题,应用程序经常会遗漏一些选项卡,并且光标会在意外的字段上结束
  • SendInput
    太快,无法为调试重播某些内容。例如,当我想观察文本如何被插入到非常复杂的表单上的字段中时

  • 理论上,使用
    Send
    可以插入一个文本块,并在键入字符时随机按住shift按钮以增加熵。可以说,我想不出为什么这会有用


只有在当前设置存在问题时,才应考虑在SeNePrase>代码>和<代码> SDENTROPEN>代码>之间切换。如果在激活长宏时键入,SendInput会导致问题。您的命令可能与宏混合在一起,从而导致不需要的行为。教程说,

SendPlay
“在旧游戏中不受支持”,但我从来没有遇到过这样的问题。有人可能会说“你使用AHK不够”。嗯,也许吧


此外,在从SendPlay切换到SendInput之前,您应该尝试将宏分成两部分。例如,《星际争霸2》中的“保存控制组,执行任务,召回控制组”失败。将其拆分为
发送“保存控制组,执行任务”;睡眠10;发送“召回控制组”有效。

根据我的经验,SendInput通常速度太快、太敏感,如果不在之后添加一些睡眠,可能会在某些程序中产生不想要的结果。默认情况下,
send
sendEvent
相同。看见不确定是否仍然存在,但不久前,新默认AHK脚本的模板在其自动执行头部分中有一行
sendMode,Input