0

自动热键脚本应该是这样的:点击热键后,它会粘贴剪贴板中的内容,然后立即选择所有粘贴的内容?

我写了一个脚本如下:

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

该脚本有效。 但是选择过程太慢了!!! 有人能写出更好的剧本吗?

4

1 回答 1

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
    }
}

此代码依赖于窗口来公开插入符号的位置,不幸的是,并非每个窗口都这样做。它会记住粘贴前的插入符号位置,并在粘贴新文本后选择文本直到旧位置;这应该等于选择所有新插入的文本。如果您只与暴露其插入符号位置的编辑合作,我建议您使用这个,因为它更快。否则,您仍然可以考虑同时使用您的方法和这个方法,具体取决于窗口和/或文本长度。

于 2013-08-02T15:41:12.737 回答