1 (изменено: belknsk, 2015-07-30 01:47:20)

Тема: AHK: Работа с буфером обмена

Хочу по хоткею произвести некоторые действия с выделенным текстом и вернуть его обратно.

Пробую следующий код:


;  Shift+CapsLock
+CapsLock::
  convertedText := DoSmth(GetSelectedText())
    
  tmpcl = %ClipboardAll%
  Clipboard = %convertedText%

  SendInput {Control Down}{v Down}{v Up}{Control Up}
    
  Clipboard = %tmpcl%
  tmpcl := ""

return

GetSelectedText() {
  tmp = %ClipboardAll%
  Clipboard := ""
  Send, ^c 
  ClipWait, 1
  selection = %Clipboard%
  Clipboard = %tmp%

  return (selection = "" ? Clipboard : selection)
}
DoSmth(text)
{
  return %text%
}

Но работает совсем странно - вместо выделенного вставляется обратно то, что было в буфере обмена изначально.

2

Re: AHK: Работа с буфером обмена

Я немного упростил код, ну просто там много что написано.
Это работает, правда только если в буфере только текст.

+CapsLock::
tmp := Clipboard
tmp := tmp "12345"
Clipboard := tmp
Return

Просто внимательно посмотрите, что вы делаете и упростите по возможности скрипт.
Я смысл вашего скрипта не очень понимаю, что вы хотите сделать то?

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

3

Re: AHK: Работа с буфером обмена

belknsk, у нас принято ставить точки в конце предложений. Отредактируйте свои посты.

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

4

Re: AHK: Работа с буфером обмена

Включаю телепатию...

  1. Пользователь выделяет текст и нажимает горячую клавишу

  2. Всё, что было в буфере обмена, сохраняется во временную переменную

  3. В буфер обмена помещается выделенный текст

  4. Скрипт берёт текст из буфера и что-то с ним делает

  5. Содержимое из временной переменной помещается обратно в буфер обмена



только если в буфере только текст

Перевод документации AutoHotkey: NikVasKo пишет:

ClipboardAll (полное сохранение и восстановление клипборда)
ClipboardAll полностью повторяет клипборд (с картинкам и форматированием). Чаще всего переменная используется, чтобы сохранить клипборд, дабы скрипт мог временно занять его для своих дел.

5

Re: AHK: Работа с буфером обмена

ypppu пишет:

Включаю телепатию...

Между 4 и 5 еще бы пункт, чтоб видоизмененный текст вернуть вместо выделенного, или куда-то сохранить. Или это уже входит в 4?

6

Re: AHK: Работа с буфером обмена

Может быть. Пока что известно только то, что странный код странно работает.

7

Re: AHK: Работа с буфером обмена

Indomito пишет:

- Летим косо...

Indomito, если в следующий раз захотите ознакомить кого либо со своими литературными познаниями, пользуйтесь личными сообщениями.

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

8 (изменено: Indomito, 2015-07-30 15:09:27)

Re: AHK: Работа с буфером обмена

+ Понял.

Больше не буду, усвоил.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro