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