有人可以帮助编写一个autohotkey脚本,以便在粘贴后选择所有粘贴的内容吗?

时间:2013-08-02 08:28:14

标签: autohotkey

autohotkey脚本应该如下: 点击热键后, 它会粘贴剪贴板中的内容,然后立即选择所有粘贴的内容吗?

我写了一个脚本如下:

^+p::
clipvar:=Clipboard
num:=strlen(clipvar)
send ^v
send +{left %num%}
return

此脚本有效。 但选择过程太慢了!!! 有人可以写一个更好的剧本吗?

1 个答案:

答案 0 :(得分:1)

SendMode, Input可选择与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
    }
}

此代码依赖于窗口来显示插入符号位置,遗憾的是,并非每个窗口都显示。它会在粘贴之前记住插入位置,并在粘贴新文本后选择文本到旧位置;这应该等于选择所有新插入的文本。如果你只是与那些暴露他们的插入位置的编辑一起工作,我建议你选择这个,因为它更快。否则,你仍然可以考虑使用你的方法和这个方法,具体取决于窗口和/或文本长度。