2016-07-29 3 views
0

Я довольно новичок в AutoHotKey, и я пытаюсь создать свою макросистему. В настоящее время у меня есть система, которая выглядит следующим образом: У меня есть текстовые переменныеСоздание текстовой макросистемы на AHK

hi = 
(
Hello, 

Some more text 
) 

автозамены

::\hi:: 
Macro(hi) 
return 

и функция Macro:

Macro(text) 
{ 
ClipSaved := ClipboardAll  ; save clipboard 
clipboard := text 
ClipWait 
Sleep, 150 
Send, ^v 
clipboard := ClipSaved  ; restore original clipboard 
return 
} 

Причина для использования функции с буфер обмена заключается в том, что длинные текстовые блоки имеют задержку до тех пор, пока они не будут распечатаны, проблема, которая не возникает с функцией.

Я нашел понятие под названием динамические hotstrings, и я думаю, что могу каким-то образом реализовать его, чтобы мне не пришлось писать второй отображаемый блок для каждого текстового поля, но вместо этого есть одна горячая строка, которая бы поняла что если это мой ввод начинается с \, и в сценарии есть переменная под именем x, которая следует за ней, она должна выполнить Macro(x), но я никогда не встречал подобных примеров.

Не могли бы вы предоставить мне образец кода или дать какие-либо указания на то, что я должен проверить?

ответ

1

Есть несколько функций AutoHotkey динамических автозамен, но это, вероятно, один вы хотите использовать Hotstring по menixator

Так что вам нужно скачать hotstring.ahk и #include как в примерах.

#SingleInstance, force 
#include Hotstring.ahk 

hi= 
(
Hello, 

Some more text 
) 

bye= 
(
So long, 

Some more text 
) 

Hotstring("/hi", "Paste") 
Hotstring("/bye", "Paste") 
return 

Paste: 
text:=Trim($,"/") ; we need to get rid of the leading/
text:=% %text%  ; and need to dereference it 
Macro(text) 
Return 

Macro(text) 
{ 
ClipSaved := ClipboardAll  ; save clipboard 
Clipboard := text 
ClipWait 
Sleep, 150 
Send, ^v 
clipboard := ClipSaved  ; restore original clipboard 
return 
} 

Есть некоторые более изящные способы сделать это, особенно с переменными, вы можете хранить их в глобальный объект (ассоциативный массив), например, но это должно заставить вас идти.

Смежные вопросы