Следующий скрипт создает разделенный запятыми список для запросов 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
до или после возврата ничего не меняет, поэтому у нас есть проблема компиляции, а не проблема задержки обработки. Как я могу заставить это работать как ожидалось?