Нужна помощь в написании скрипта

Помощь в написании скриптов
icetooth
Posts: 1
Joined: 25 Dec 2023, 07:36

Нужна помощь в написании скрипта

25 Dec 2023, 07:47

Данный скрипт будет делать следующее:

Каждый раз когда любой текст попадает в буфер обмена, тут же вставляется в неактивное окно, но перед вставкой должен будет нажаться 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
mcl
Posts: 357
Joined: 04 May 2018, 16:35

Re: Нужна помощь в написании скрипта

25 Dec 2023, 12:29

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
}
Поскольку целевая программа может быть закрыта, а объём текста может быть велик, возможно, надёжнее было бы собирать скопированные тексты в переменную, а извлекать их, скажем, по горячей клавише.
github://oGDIp - GDI+ wrapper for AHK v1.1

Return to “Помощь”

Who is online

Users browsing this forum: No registered users and 54 guests