2016-03-31 111 views
3

Autohotkey documentation写:什么时候应该通过Autohotkey中的SentInput使用`Sent`?

SendInput通常是发送,因为它的优异的速度和可靠性的键盘和鼠标操作的优选方法。在大多数情况下,即使发送长字符串,SendInput也几乎是即时的。由于SendInput速度如此之快,它也更加可靠,因为其他窗口意外弹出并截取击键的机会较少。可靠性进一步得到改善,因为在SendInput期间用户键入的任何内容都被推迟到之后。

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

+0

根据我的经验,SendInput通常太快而且敏感,如果您之后不添加某些睡眠,某些程序可能会产生不想要的结果。 – user3419297

+1

默认情况下,'send'与'sendEvent'相同。请参阅https://autohotkey.com/docs/commands/SendMode.htm。不知道是否仍然存在,但是前一段时间,新的默认AHK脚本的模板在其自动执行头部分中有'sendMode,Input'行 – Blauhirn

回答

1

我一般使用SendInput,因为我喜欢近乎瞬时的输入。不过,我也遇到了一些实际限制:

  • 如游戏一些应用程序不喜欢这样快击键因为有可能对马胃蝇蛆的规则。

  • 某些应用程序无法处理快速接收击键,而他们只是陷入停滞状态。

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

    • 当选中某个字段时,应用程序在接受任何输入之前需要时间来确认光标到达。 SendInput命令只是为了加快速度并且经常导致混合结果
    • 多次按下标签也是有问题的,并且应用程序经常会忽略某些标签,并且光标会在意外字段上结束。
  • SendInput太快,无法重播某些东西进行调试。例如,当我想要观察如何将文本插入到非常复杂的表单中的字段中时。

  • 理论上与Send你可以插入一个文本的斑点,随机按住shift按钮来增加熵,而字符被键入。可以说我想不出为什么这会有用。

1

你应该考虑SendPlaySendInput之间的切换仅如果您有当前的设置问题。如果在激活长宏时键入,SendInput会导致问题。您的命令可能与宏混合导致不良行为。教程指出SendPlay是“旧游戏不支持”,但我从来没有遇到过问题。有人可能会评论说“你没有足够使用AHK”。也许。

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

相关问题