1 (изменено: becauseim, 2015-10-24 10:40:07)

Тема: AHK: Альтернативный буфер обмена

Кажется, в этой теме обсуждалось что-то подобное, но так и не понял, каков итоговый замысел у того множества буферов. Мне же хотелось бы иметь лишь один альтернативный буфер обмена, с историей, но без GUI. Желаемое в действиях:

При нажатии на сочетание клавиш Ctrl+Shift+C копирую выделенный текст в альтернативный буфер обмена (наверное, какое-либо значение переменной AHK). Текстом может быть, например, текущее время: "7:00". Далее этим же сочетанием клавиш копирую текст, с содержанием "8:00" и "9:00".  После чего отправляю скопированное поочередно, в обратном порядке: нажимаю на Backspace, отправляется текст "9:00", нажимаю повторно (не дважды), отправляется "8:00", еще раз - "7:00". Буду признателен помощи!

2

Re: AHK: Альтернативный буфер обмена

Clip := []

^+vk43::    ;  "Ctrl+Shift+C"
    S_Clipboard := ClipboardAll
    Clipboard =
    Send ^{vk43}    ;  "C"
    ClipWait, 1
    If !ErrorLevel 
        Clip.Push(Clipboard)
    Clipboard := S_Clipboard
    Return

Backspace::
    S_Clipboard := ClipboardAll
    Clipboard := Clip.Pop()
    Send ^{vk56}    ;  "V"
    Sleep 100
    Clipboard := S_Clipboard
    Return
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

3 (изменено: becauseim, 2015-10-25 14:15:39)

Re: AHK: Альтернативный буфер обмена

Большое спасибо! Показалось удивительным, что для этого требуется столь небольшой объем кода. Упустил одну деталь, можно ли настроить отправление по Backspace сразу предпоследней скопированной строки? Т.е. сразу "8:00".

upd.: Также хотелось бы, чтобы скрипт умел "перепрыгивать" через повторяющиеся значения к ряду. Т.е. брал только одну копию из повторяющихся строк, скопированных друг за другом.

4 (изменено: serzh82saratov, 2015-10-25 15:55:54)

Re: AHK: Альтернативный буфер обмена


Clip := []

^+vk43::    ;  "Ctrl+Shift+C"
    S_Clipboard := ClipboardAll
    Clipboard =
    Send ^{vk43}    ;  "C"
    ClipWait, 1
    If !ErrorLevel
        Clip[1] == Clipboard ? 0 : Clip.InsertAt(1, Clipboard)
    Clipboard := S_Clipboard
    Return

Backspace::
    S_Clipboard := ClipboardAll
    Clipboard := Clip.RemoveAt(2)
    Send ^{vk56}    ;  "V"
    Sleep 100
    Clipboard := S_Clipboard
    Return
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui