2016-03-31 49 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";作品。

相關問題