Тема: AHK: Вставка в буфер обмена.
В своё время я у creature.ws "утянул" этот скрипт -
; Windows Vista+
; AHK-L
#SingleInstance Ignore
#KeyHistory 0
#NoEnv
#NoTrayIcon
OnExit, ExitSub
DllCall("AddClipboardFormatListener", "Int", A_ScriptHwnd)
OnMessage(WM_CLIPBOARDUPDATE := 0x031D, "ClipSave")
clipHistory := []
Esc & F1::
Esc & F2::
Esc & F3::
Esc & F4::
Clipboard := clipHistory[Index := SubStr(A_ThisHotkey,0)]
Controlgetfocus, FClassNN, A
SendMessage, 0x302,,,%FClassNN%, A
SendMessage, 0x8 ,,,%FClassNN%, A
SendMessage, 0x7 ,,,%FClassNN%, A
Return
$Esc Up::Send {Blind}{Esc}
Return
ClipSave()
{
global
If (clipHistory[Index] = Clipboard)
Return
If !newIndex := clipHistory.MaxIndex()+1
newIndex := 1
If (newIndex > 4)
clipHistory.Remove(1), newIndex--
clipHistory.Insert(newIndex, Clipboard)
Return
}
ExitSub:
DllCall("RemoveClipboardFormatListener", "Int", A_ScriptHwnd)
ExitApp
Return Немного его поправил и дополнил (исправил реализацию с очереди на дек), но возникла проблема при нажатии на Ctrl+C ,etc, т.е. все, что может запихнуть, в буфер обмена попадает на неопределённую комбинацию - на Esc+ F1, Esc+F2, Esc+F3 и Esc+F4.
Это можно как то победить, т.е. вставка происходила на конкретную клавишу (элемент массива)
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

