AutoHotkey: как отправить содержимое буфера обмена при нажатии клавиш?

8448
RCIX

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

1

4 ответа на вопрос

5
Ross

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

^+v::SendRaw %clipboard% 

^ + v означает ctrl + shift + v. Замените на желаемое сочетание клавиш. Посмотрите на этой странице, какие символы соответствуют каким клавишам-модификаторам.

Если вы отпустите клавиши CTRL и SHIFT, когда AHK все еще отправляет ключи, событие может не сработать, и вы застреваете с нажатыми клавишами SHIFT и CTRL, пока не нажмете их снова. Какой самый элегантный способ предотвратить это? Ben Philipp 3 года назад 0
1
John T

Чтобы отобразить Ctrl+ Kдля отправки данных буфера обмена, например:

^k::Send %clipboard% 
Он говорит, что это не разрешено в качестве выходной переменной ... RCIX 11 лет назад 0
что говорит сценарий? Сценарий у меня работает, я его скомпилировал и протестировал перед публикацией. Он должен отправлять ключи так же, как если бы это был ввод с клавиатуры. John T 11 лет назад 0
Моя ошибка, я не обращаю достаточно внимания на то, в какой строке была ошибка ... RCIX 11 лет назад 0
Это не будет включать в себя все. Команда Send пытается интерпретировать определенные символы, и они будут изменены или исключены из вывода (пример: + и!). Ross 7 лет назад 0
1
Matthew Lock

Я исправил оригинальный сценарий, который вы написали здесь: https://superuser.com/questions/7271/most-useful-autohotkey-scripts/31282#31282 Теперь отлично работает в моей системе Vista.

Фрагмент кода, о котором идет речь, извлеченный из глубин Wayback Machine:

^!c:: ClipSave := ClipboardAll Send ^x Run calc.exe WinWaitActive Calculator Send ^v Send  Sleep 250 Send ^c WinClose Send ^v Clipboard := ClipSave return 
Связанный вопрос был удален, что делает этот ответ бесполезным. Пожалуйста, не просто ссылка на другой ресурс в качестве ответа. Ross 7 лет назад 0
http://wayback.archive.org/web/20130701085906/http://superuser.com/questions/7271/most-useful-autohotkey-scripts/31282#31282 Matthew Lock 7 лет назад 0
0
David Ljung Madison

Отправка ctrl-v может сработать, если предположить, что ваше приложение действительно использует это для вставки, но многие этого не делают.

Другой вариант, похожий на параметры отправки выше, но без медлительности SendRaw и без интерпретации Send (и с некоторым улучшением по сравнению с проблемой застрявших клавиш-модификаторов):

;; Alt-Control v SendInput,%Clipboard% SendInput, ;; Try to release modifier keys return 

Хотя иногда клавиши-модификаторы все еще застряли ...

Похожие вопросы