gpt4 book ai didi

Autohotkey 剪贴板变量永远保持值?

转载 作者:行者123 更新时间:2023-12-01 10:45:43 27 4
gpt4 key购买 nike

我有下面的简单代码,它发送剪贴板中文本的击键,字符之间有 15 毫秒的延迟(我用它来遍历巨大的 TreeView 元素列表)。

问题:如果我将“text1”复制到剪贴板,然后复制“text2”,则此脚本输出“text1text2”而不是单独的“text2”。

如果我重新加载脚本,它会打印“text2”。

下面的代码是否有错误,或者是在 Autohotkey 1.1.14.03 中实现 %clipboard% 的错误?

#v::
textToType=" "
textToType=%clipboard%
LoopCount:=StrLen(textToType)
;StringLen, LoopCount, textToType
Array%LoopCount%:=textToType
loop %LoopCount%
{
theChar:=Array%A_Index%
Send %theChar%
sleep 15
}
return

更新:感谢您指出更聪明的方法,但我仍然想弄清楚上面这段代码有什么问题。

更新 2:错误在于我对 AHK 语法的理解。 Array%LoopCount%:=textToType 将 textToType 中的整个字符串值分配给名为 'Array '.

更新 3:(感谢@John Y 的澄清)

实际上,传统意义上根本没有“声明的”数组。你只有一堆单独的变量,根据需要动态创建,恰好名称末尾带有数字。 Array1 和 Array2 不是某些 Array 对象中的元素。它们只是两个完全独立的变量。 AutoHotkey 提供了一种将数字粘贴到名称末尾的方法,因此您可以像使用数组一样使用它们。

最佳答案

您的脚本无法正常工作的原因是因为您使用的是 pseudo-array存储剪贴板中的不同单词。

我已经评论了你的代码来解释它的作用:

#v::
textToType := "" ; Empty variable
textToType := Clipboard ; Move clipboard into variable

; Get lenght of the word
; Used as array index / loop count
LoopCount := StrLen(textToType)

; Put the clipboard in an array at index 'LoopCount'
Array%LoopCount% := textToType

; Loop through the array as many times
; as the string is long
Loop % LoopCount
{
; Retrieve the word at this index in the array
theChar := Array%A_Index%
; Send the whole word
Send, % theChar
sleep 15
}
return

您不是一次发送每个字符,而是从Array 数组中的特定索引发送整个单词。

假设您复制单词 Dragon,该单词有 6 个字母长。所以你会把它放在 Array6 中,然后你会使用同一个变量在你的数组中循环 6 次。此时循环将一次获取每个索引并将其移动到 theChar 中。在循环的第 6 圈,您将 Array6 放入 theChar 并立即打印整个单词。

然后复制单词 Stackoverflow。这将进入 Array13,我们将循环 13 次。在第 6 圈,我们将打印出 Array6 中的 Dragon,然后继续前进直到我们到达第 13 圈,在那里我们将打印 Stackoverflow 因为它在 Array13 中。

这就是为什么您的脚本没有按照您的要求执行。希望这会有所帮助。

参见代码示例 alpha bravo posted ,这是实现你想做的事情的正确方法。

关于Autohotkey 剪贴板变量永远保持值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26287870/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com