icetooth wrote: ↑
Каждый раз когда любой текст попадает в буфер обмена, тут же вставляется в неактивное окно, но перед вставкой должен будет нажаться enter и после вставки, скрипт должен работать постоянно.
Звучит как плохой кейлоггер. С каким умыслом вы задумали этот скрипт?
Я пока ничего не понимаю, но вот что-то набросал.
Code: Select all
F1::
F1 := !F1 ; Это зачем?
tempClip := Clipboard ; А это зачем?
copiedText := Clipboard ; Зачем?
Clipboard := tempClip ; Зачем это?
ControlFocus,, ahk_exe name.exe ; Это ок
ControlSend,, {Enter}, %copiedText%, ahk_exe name.exe ; Это тоже ок
return
Code: Select all
#Persistent ; Без этой директивы скрипт завершится на третьей строке (Return)
OnClipboardChange("ClipChanged") ; При изменении содержимого буфера обмена будет вызываться функция ClipChanged
Return
ClipChanged(dataType) { ; Функция принимает один аргумент: тип содержимого буфера обмена
If (dataType != 1) ; Если содержимое не может быть выражено текстом (например, буфер обмена пуст или там картинка),
Return ; выходим, ничего не делая
ControlFocus, , ahk_exe notepad.exe
; После нажатия Enter включается Text-режим, чтобы используемые AHK спецсимволы (например, + ! ^ { })
; не обрабатывались, а отсылались именно как текст. В качестве текста отправляется всё содержимое буфера обмена.
ControlSend, , {Enter}{Text}%Clipboard%, ahk_exe notepad.exe
Return
}
Поскольку целевая программа может быть закрыта, а объём текста может быть велик, возможно, надёжнее было бы собирать скопированные тексты в переменную, а извлекать их, скажем, по горячей клавише.