1 (изменено: serjik.tsapin, 2021-04-10 05:39:01)

Тема: AHK: Разделение буфера обмена на 3 части

Добрый день, есть программа из которой копируются данные поочередно из разных столбцов, и вставляются в Microsoft Excel.
Как разделить буфер обмена на 3 части?
Чтобы поочередно можно было сначала скопировать 3 значения, а потом так же поочередно вставить значение 1,2 и 3

А то приходится "скопировать + Альт-ТАБ + вставить" потом переходить ко 2-му значению и обратно "скопировать + Альт-ТАБ + вставить"
https://b.radikal.ru/b28/2104/1b/d864ed116900.png

https://d.radikal.ru/d35/2104/60/676f26635b8d.png

2

Re: AHK: Разделение буфера обмена на 3 части

Хранить данные в скрипте можно.
Нажали на клавишу - скрипт сохранил из буфера или сразу отправил посыл клавиш Ctrl+C.

Win10x64, AHK v1.1.33.09 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

3 (изменено: serjik.tsapin, 2021-04-10 05:29:34)

Re: AHK: Разделение буфера обмена на 3 части

__Михаил__ пишет:

Хранить данные в скрипте можно.
Нажали на клавишу - скрипт сохранил из буфера или сразу отправил посыл клавиш Ctrl+C.

Не могли бы на примере показать?

Меня интересует что то на подобии, 3 значения скопировал по очереди, далее зашел в эксель, и поочередно вставил в каждую ячейку.

4 (изменено: __Михаил__, 2021-04-10 05:54:25)

Re: AHK: Разделение буфера обмена на 3 части

Примерно такой код:

F1::	; Скопировать выделенное в память скрипта:
SetTimer, TT, Off
ClipBoard=	; Очистить буфер.
Send, ^c	; Нажать Ctrl + C.
ClipWait, 1	; Ожидать заполнения буфера 1 сек.
If ErrorLevel
{
 ToolTip, Нет данных!
 SetTimer, TT, -1000
 Return
}
If !Arr		; Если своего буфера ещё нет - создать.
{
 Arr := []
 T := 0
}

ToolTip, Копия в буфере
Arr.Push(ClipBoard)
SetTimer, TT, -1000
Return


F2::	; Вставить из памяти скрипта:
If !Arr
{
 ToolTip, Буфер пуст!
 SetTimer, TT, -1000
}
T++

ClipBoard := Arr[T]
Send, ^v	; Нажать Ctrl + V.
Return


F3::	; Очистить буфер.
Arr=
Return

TT:
ToolTip
Return
Win10x64, AHK v1.1.33.09 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

5 (изменено: EV, 2021-04-10 13:56:37)

Re: AHK: Разделение буфера обмена на 3 части

Из этой темы. Выделение ЛКМ+С - копировать в буфер, вырезать - ЛКМ+X, вставить - ЛКМ+V.
ЛКМ+ПКМ - показать буфер. Если отпустить ЛКМ, удерживая ПКМ - буфер очистится.

; ============================================ MultiClip
oBuff:=[], OO := "`n 0  0 `n   _`n `n" 
~vk1 & vk43:: ; LButton & C
~vk1 & vk58:: ; LButton & X
   Clipboard =
   SendInput {Click up}
   SendInput % (A_ThisHotkey = "~vk1 & vk43") ? "^{Ins}" : "+{Del}"
   ClipWait, 1
   Sleep 100
   if !ErrorLevel {
      oBuff.Insert(Clipboard)
      tooltip % oBuff.MaxIndex()
      sleep 300
      tooltip
   }
Return

~vk1 & vk56:: ; LButton & V
   if oBuff.MaxIndex() {
      Clipboard := oBuff.Remove(1)
      SendInput {Click up}
      Sleep 100
      SendInput +{Ins}
      tooltip % oBuff.MaxIndex()
   } else tooltip % OO
   sleep 500
   tooltip
Return

~vk1 & vk2:: ; LButton & RButton
   r := ""
   for k,v in oBuff
      r .= k ":   " v "`n"
   tooltip % r ? r : OO
   KeyWait, vk1
   KeyWait, vk2, T0.1
   if ErrorLevel
      oBuff.Remove(1, oBuff.MaxIndex())
   tooltip
Return