AutoHotkey расширить буфер обмена - PullRequest
1 голос
/ 14 декабря 2011

Как мы все испытывали один раз или более, иногда действительно раздражает необходимость заменить ваш контент буфера обмена другим контентом (в то время как вам нужна другая информация только один раз или около того).

Я думал, что мы могли бы решить эту проблему, используя autohotkey, но я понятия не имею, как это сделать.

Я думаю об установке переменных в горячей клавише, например, когда вы нажимаете Ctrl C , старый контент буфера обмена сохраняется внутри AutoHotkey, и вы можете получить этот старый контент нажав ie Alt V , в то время как обычный Ctrl V просто возвращает текущее значение буфера обмена.

Может ли кто-нибудь помочь мне с этим, пожалуйста? Я не знаю, как постоянно хранить значения внутри AutoHotkey.

С уважением, Aart


EDIT:

Я нашел идеальный сценарий. Я изменил это, поскольку я хотел, чтобы это работало. Теперь вы можете просто использовать Ctrl + C и продолжить копирование, но если вы хотите что-то извлечь, просто используйте Alt LeftArrow и Это здесь! Веселитесь с этим; Я знаю, я буду. :)

Управление:

  • Ctrl + C >> копировать
  • Alt + V >> Вставить
  • Alt + Стрелка влево >> цикл назад
  • Alt + Стрелка вправо >> цикл вперед
  • Alt + H >> показать это сообщение

Код:

handleClip(action)
{
   global static AddNextNum
   global static GetNextNum
   global static HighestNum
   global static ClipArray
   global static ClipArray1
   global static ClipArray2
   global static ClipArray3
   global static ClipArray4
   global static ClipArray5
   global static ClipArray6
   global static ClipArray7
   global static ClipArray8
   global static ClipArray9
   global static ClipArray10
   global static ClipArray11
   global static ClipArray12
   global static ClipArray13
   global static ClipArray14
   global static ClipArray15
   global static ClipArray16
   global static ClipArray17
   global static ClipArray18
   global static ClipArray19
   global static ClipArray20
   global static ClipArray21
   global static ClipArray22
   global static ClipArray23
   global static ClipArray24
   global static ClipArray25
   global static ClipArray26
   global static ClipArray27
   global static ClipArray28
   global static ClipArray29
   global static ClipArray30

   if (action = "save")
   {
      if (AddNextNum < 30)
      {
         AddNextNum += 1 ;
      }
      else
      {
         AddNextNum := 1 ;
      }


      if (HighestNum < 30)
      {
         HighestNum += 1 ;
      }

      GetNextNum := AddNextNum ;   
      ClipArray%AddNextNum% := Clipboard
   }
   else if ((action = "get") OR (action = "roll"))
   {
      if (GetNextNum != 0)
      {
         if (action = "roll")
         {
            Send, ^z
         }
         Clipboard := ClipArray%GetNextNum%
         if (GetNextNum > 1)
         {
            GetNextNum -= 1 ;
         }
         else
         {
            GetNextNum := HighestNum
         }
         Send, ^v
      }
   }
   else if (action = "rollforward")
   {
      if (GetNextNum != 0)
      {
         Send, ^z
         if (GetNextNum < HighestNum)
         {
            GetNextNum += 1 ;
         }
         else
         {
            GetNextNum := 1
         }
         Clipboard := ClipArray%GetNextNum%
         Send, ^v
      }
   }
   else if (action = "clear")
   {

      GetNextNum := 0
      AddNextNum := 0
      HighestNum := 0
   }
}

!0::
   handleClip("clear")
return

^c::
   suspend on
   Send, ^c
   suspend off
   handleClip("save")

return

!v::
   handleClip("get")
return

!Left::
   handleClip("roll")
return

!Right::
   handleClip("rollforward")
return

!H::
MsgBox Extended Clipboard controls: `r`n`r`nCtrl+C >> copy `r`nAlt+V >> paste `r`nAlt+Left Arrow >> cycle back `r`nAlt+Right Arrow >> cycle forward`r`nAlt+H >> display this message

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я сам не писал этот код. Я просто изменил это. Оригинальный скрипт можно найти здесь .

Ответы [ 3 ]

2 голосов
/ 14 декабря 2011

Вот как я это решил.Я даже храню значения в файле, чтобы они оставались в «памяти» после перезагрузки ....

+#F1:: ; Shift Windows F1
M1=
Sleep, 50
Send, ^c
Clipwait
Sleep, 100
M1 = %clipboard%
IniWrite, %M1%, C:\Tmp\Robert.ini, Memory, M1
TrayTip, Copy,Data stored in M1,1,1
return
 #F1:: ; Windows + F1
If M1 =
{
  IniRead, M1, C:\Tmp\Robert.ini, Memory, M1
}
ClipBoard = %M1%
Send, ^v
TrayTip, Paste,Data pasted from M1,1,1
Return

Затем сделал то же самое для Windows + F2 ..... Windows + F4

Надеюсь, это поможет

Да, кстати, это удаляет все форматирование из ваших данных ....

1 голос
/ 19 апреля 2016

Я сделал другой вариант, стиль starcraft, в котором вы назначаете выбранное содержимое номеру с помощью ctrl + number и снова получаете доступ к этому содержимому, используя номер с цифровой клавиатуры.Я решил опубликовать его на случай, если вам захочется попробовать.Для меня легче получить доступ к нужному контенту, чем просматривать историю.Спасибо, что подняли это в теме.Я много раз думал об этом и случайно наткнулся на эту ветку, которая дала мне инструменты, в которых я нуждался

#SingleInstance force

handleClip(action, num)
{
   global static ClipArray0
   global static ClipArray1
   global static ClipArray2
   global static ClipArray3
   global static ClipArray4
   global static ClipArray5
   global static ClipArray6
   global static ClipArray7
   global static ClipArray8
   global static ClipArray9

   if (action = "save")
   {  
      ClipArray%num% := Clipboard
   }
   else if (action = "get")
   {
      Clipboard := ClipArray%num%
      Send, ^v
   }
}

;COPY
^1::
    suspend on
    Send, ^c
    suspend off
    handleClip("save", 1)
return

^2::
   suspend on
   Send, ^c
   suspend off
   handleClip("save", 2)
return

^3::
   suspend on
   Send, ^c
   suspend off
   handleClip("save", 3)
return

^4::
   suspend on
   Send, ^c
   suspend off
   handleClip("save", 4)
return

^5::
   suspend on
   Send, ^c
   suspend off
   handleClip("save", 5)
return

^6::
   suspend on
   Send, ^c
   suspend off
   handleClip("save", 6)
return

^7::
   suspend on
   Send, ^c
   suspend off
   handleClip("save", 7)
return

^8::
   suspend on
   Send, ^c
   suspend off
   handleClip("save", 8)
return

^9::
   suspend on
   Send, ^c
   suspend off
   handleClip("save", 9)
return

^0::
   suspend on
   Send, ^c
   suspend off
   handleClip("save", 0)
return

;PASTE
Numpad1::
   handleClip("get", 1)
return

Numpad2::
   handleClip("get", 2)
return

Numpad3::
   handleClip("get", 3)
return

Numpad4::
   handleClip("get", 4)
return

Numpad5::
   handleClip("get", 5)
return

Numpad6::
   handleClip("get", 6)
return

Numpad7::
   handleClip("get", 7)
return

Numpad8::
   handleClip("get", 8)
return

Numpad9::
   handleClip("get", 9)
return

Numpad0::
   handleClip("get", 0)
return
0 голосов
/ 09 января 2015

Еще один простой скрипт, который не изменяет ваш буфер обмена вообще , но дает вам возможность получить доступ к вашим последним 10 (изменяемым: см. Первую строку) буферу обмена текст записей.Я сам не мог больше жить без следующего.Более чем полезно для программирования.

Работает с: sqlite.Необходимо: sqlite3.dll и class_SQLiteDB.ahk

http://pastebin.com/1weXi1eX

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...