粘贴特殊情况后,AHK还原剪贴板

时间:2019-10-18 17:23:37

标签: automation autohotkey

以下脚本为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

在返回之前或之后也没有任何改变,因此我们遇到了编译问题,而不是处理延迟问题。如何使它按预期运行?

1 个答案:

答案 0 :(得分:0)

需要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
相关问题