自动热键脚本应该是这样的:点击热键后,它会粘贴剪贴板中的内容,然后立即选择所有粘贴的内容?
我写了一个脚本如下:
^+p::
clipvar:=Clipboard
num:=strlen(clipvar)
send ^v
send +{left %num%}
return
该脚本有效。 但是选择过程太慢了!!! 有人能写出更好的剧本吗?
自动热键脚本应该是这样的:点击热键后,它会粘贴剪贴板中的内容,然后立即选择所有粘贴的内容?
我写了一个脚本如下:
^+p::
clipvar:=Clipboard
num:=strlen(clipvar)
send ^v
send +{left %num%}
return
该脚本有效。 但是选择过程太慢了!!! 有人能写出更好的剧本吗?
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
}
}
此代码依赖于窗口来公开插入符号的位置,不幸的是,并非每个窗口都这样做。它会记住粘贴前的插入符号位置,并在粘贴新文本后选择文本直到旧位置;这应该等于选择所有新插入的文本。如果您只与暴露其插入符号位置的编辑合作,我建议您使用这个,因为它更快。否则,您仍然可以考虑同时使用您的方法和这个方法,具体取决于窗口和/或文本长度。