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谢谢!现在速度要快得多,虽然不是瞬间的。