1 (изменено: size222, 2024-06-15 13:10:28)

Тема: AHK: Вставить весь буфер обмена

Здравствуйте, Уважаемые Господа. Подскажите, есть необходимость вставить сразу несколько скопированных текстов.

Например копируем Ctrl+С "Саша" потом копируем "Маша" и копируем "Даша"

Далее при нажатии Ctrl+V вставляется Саша Маша Даша.

Далее, например сочетанием клавиши Ctrl+B очищаем буфер обмена и все по новой.


Внесу поправку. Копирование текста происходит через OCR (распознавание текста с изображения), то есть текст копируется не с помощью сочетания клавиш Ctrl+С.

Нужно, чтобы именно с помощью сочетания клавиш Ctrl+V вставлялся весь буфер обмена.

2

Re: AHK: Вставить весь буфер обмена

По мере получения сохраняйте текст в переменную, потом поместите её в буфер обмена.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3 (изменено: __Михаил__, 2024-06-16 13:09:33)

Re: AHK: Вставить весь буфер обмена

size222 Проверьте этот код:

Ch := 1		; По умолчанию собирает всё что скопировано в буфер.
Global Arr := []	; Список скопированного.
OnClipboardChange("CopyClip", Ch)
Return

CopyClip(c){
 If (c = 1)	; Копировать только текстовые данные.
  Arr.Push(Clipboard)
}

F2::	; F2	Вкл. / Выкл. сбор скопированного:
OnClipboardChange("CopyClip", Ch := !Ch)
MsgBox, 0,, % "Сбор текста в" (!Ch ? "ы":"") "ключен.", 3
Return

^b::	; Ctrl+B	Очищаем список:
Arr := []
MsgBox, 0,, Список очищен. , 1
Return

$^v::	; Ctrl+v	Вставить последние 3 скоп. в буфер.
KeyWait, Ctrl, U	; Ожидать отпускания гор. клавиш:
KeyWait, v, U
If Ch	; Отключить сбор на время выполнения:
 OnClipboardChange("CopyClip", 0)
S := Arr.Count(), T := ""
Loop, 3
 T .= Arr[S - 3 + A_Index] 	; Сбор последних 3 текстов в одну строку.
Clipboard := T
SendInput, ^{v}
If Ch
 OnClipboardChange("CopyClip", 1)
Return
Win11x64, AHK v1.1.37.01 (Unicode 64-bit), AHK v2.0.17| AHK-Wiki | Переменные и выражения | RegEx101