Буфер обмена AHK Restore после специальной вставки - PullRequest
0 голосов
/ 18 октября 2019

Следующий скрипт создает разделенный запятыми список для запросов 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 голосов
/ 18 октября 2019

Требуется 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
...