Я делаю скрипт autohotkey для запуска выделенного текста через калькулятор, и мне нужно отправить содержимое буфера обмена в виде последовательности нажатий клавиш, поскольку калькулятор на самом деле не поддерживает вставку математической операции. Как это будет достигнуто?
4 ответа
Вам нужно использовать такую команду, чтобы "напечатать" именно то, что находится в буфере обмена.
^+v::SendRaw %clipboard%
^+v означает ctrl+shift+v. Замените на желаемое сочетание клавиш. Посмотрите на этой странице, какие символы соответствуют каким клавишам-модификаторам.
Я исправил оригинальный сценарий, который вы написали здесь: 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 {Enter}
Sleep 250
Send ^c
WinClose
Send ^v
Clipboard := ClipSave
return
Чтобы сопоставить Ctrl + K для отправки данных буфера обмена, например:
^k::Send %clipboard%
Отправка ctrl-v может сработать, если предположить, что ваше приложение действительно использует это для вставки, но многие этого не делают.
Другой вариант, похожий на параметры отправки выше, но без медлительности SendRaw и без интерпретации Send (и с некоторым улучшением по сравнению с проблемой застрявших клавиш-модификаторов):
;; Alt-Control v
SendInput,{Raw}%Clipboard%
SendInput,{Alt}{Ctrl} ;; Try to release modifier keys
return
Хотя иногда клавиши-модификаторы все еще застряли ...