在AutoHotKey中每秒粘贴数百个字符的最佳方法是什么

时间:2015-09-30 20:33:17

标签: autohotkey

当我使用send / sendinput / sendplay时加载时间太长,或许我不正确地处理我的字符串。我发现最快的路线是使用剪贴板,但即使这是一个问题,因为我需要粘贴的东西有多快和多样化。

3 个答案:

答案 0 :(得分:0)

The documentation for SendInput说:

  

在大多数情况下,SendInput几乎是即时的,即使发送长字符串

有一个注释,如果您从未同时运行多个AHK脚本,则无关紧要:

  

如果执行SendInput的脚本以外的脚本安装了低级键盘钩子,SendInput会自动恢复为SendEvent(如果SendMode InputThenPlay有效,则自动恢复为SendPlay)

然而,我认为对于一些/多个应用程序,剪贴板方法确实是唯一一个实际瞬间的方法。所以我只需将ClipboardAll保存在临时变量中,然后在对文本进行复制后将其恢复。

答案 1 :(得分:0)

如果数据量太大而无法一次粘贴,为什么不将数据存储到多个变量(伪数组)中并循环遍历伪数组,将第一个变量复制到剪贴板,粘贴它,复制第二个变量等等。

答案 2 :(得分:0)

将这些行添加到脚本的顶部,然后再次尝试使用剪贴板和SendInput:

SetBatchLines, -1  
SetKeyDelay, -1, -1

然后有ControlSetText几乎绕过键盘输入仿真并更直接地与目标进程通信。但是你总是替换那个控件的整个文本,所以它不仅仅是粘贴"。

ControlSetText, Edit1, New Text Here, Untitled -  

如果你想告诉你究竟需要做什么,我们可能会想出一个更好的解决方案。例如,WriteProcessMemoryWinHttpObject5.1是非常强大的函数/对象,可以直接写入RAM并直接将数据发送到Web服务器,而无需使用糟糕的键盘仿真。但既然你还没有谈到你实际上在尝试什么,那么很难说这些对你有用。

另外,请注意,您的目标进程可能具有某种类型的有限缓冲区大小,因此您实际上不能每秒粘贴超过x个字符。