Autohotkey 是否有人可以帮助编写一个自动热键脚本,用于在粘贴后选择所有粘贴的内容?
自动热键脚本应执行以下操作: 点击热键后, 它将粘贴剪贴板中的内容,然后立即选择所有粘贴的内容 我写了一个脚本如下:Autohotkey 是否有人可以帮助编写一个自动热键脚本,用于在粘贴后选择所有粘贴的内容?,autohotkey,Autohotkey,自动热键脚本应执行以下操作: 点击热键后, 它将粘贴剪贴板中的内容,然后立即选择所有粘贴的内容 我写了一个脚本如下: ^+p:: clipvar:=Clipboard num:=strlen(clipvar) send ^v send +{left %num%} return 这个脚本很有效。 但是选择过程太慢了 有人能写一个更好的脚本吗?发送模式,输入可以与SetBatchLines,-1和SetKeyDelay的变体组合使用,可以加速按键顺序。 然而,选择大文本仍然需要一段时间,速度较慢的
^+p::
clipvar:=Clipboard
num:=strlen(clipvar)
send ^v
send +{left %num%}
return
这个脚本很有效。
但是选择过程太慢了强>
有人能写一个更好的脚本吗?
发送模式,输入可以与SetBatchLines,-1
和SetKeyDelay
的变体组合使用,可以加速按键顺序。
然而,选择大文本仍然需要一段时间,速度较慢的机器可能会进一步降低速度
以下是另一种更有效的方法(就发送击键而言):
^+p::
oldCaretX := A_CaretX
oldCaretY := A_CaretY
Send, ^v
WaitForCaretChange()
MouseGetPos, mX, mY
MouseClickDrag, Left, %A_CaretX%, %A_CaretY%, %oldCaretX%, %oldCaretY%
MouseMove, %mX%, %mY%
return
WaitForCaretChange() {
oldCaretX := A_CaretX
oldCaretY := A_CaretY
while(A_CaretX = oldCaretX && A_CaretY = oldCaretY) {
Sleep, 15
}
}
这段代码依赖于窗口来显示插入符号位置,不幸的是,并非每个窗口都这样做。它记住粘贴前的插入符号位置,并在粘贴新文本后将文本选择到旧位置;这应该等于选择所有新插入的文本。如果你只与公开插入符号位置的编辑器合作,我建议你使用这个,因为它更快。否则,根据窗口和/或文本长度,您仍然可以考虑同时使用您的方法和此方法。将SendMode,在脚本顶部输入。如果这样做不行,请尝试SetBatchLines,-1
并使用SetKeyDelay
@MCL谢谢!现在速度要快得多,虽然不是瞬间的。