以下脚本为SQL查询创建一个逗号分隔的列表,但只是拒绝还原原始剪贴板:
#!x:: ;Win+Alt+x
oCB := ClipboardAll ;store original clipboard
StringReplace,clipboard,clipboard,`n,`,,All
StringReplace,clipboard,clipboard,`r,,All
if pos = 0
StringRight, clipboard, clipboard, StrLen(clipboard)-3
testString = %clipboard%
StringReplace,testString,testString,`,,,All
testString := testString * 1
if (testString is integer) {
} else {
StringReplace,clipboard,clipboard,`,,'`,',All
clipboard = '%clipboard%'
}
Send,^v
;ClipBoard := oCB ;restore original clipboard (in theory)
Return
最后一条注释行ClipBoard := oCB
应该恢复原始剪贴板,但是添加它会使Send,^v
中粘贴的数据成为原始剪贴板。返回后添加ClipBoard := oCB
会导致代码被忽略。
添加:
clipboard = ;
Send ^c
ClipWait
ClipBoard := oCB
返回之前或之后也没有任何改变,因此我们遇到了编译问题,而不是处理延迟问题。如何使它按预期运行?
需要正确使用ClipWait:
#!c:: ;Win+Alt+c
Clip2 := Clipboard ;store original Clipboard
Clipboard := ""
Clipboard := StrReplace(Clip2, A_Space,"+") ;do some stuff
ClipWait
Send,^v
Clipboard := ""
ClipWait
Clipboard := Clip2
Return