2016-07-29 37 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的功能,但是这可能是你想要menixator

使用Hotstring一所以你需要下载hotstring.ahk和#包括其作为例子。

#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 
} 

有一些更优雅的方式做到这一点,尤其是与变量,你可以将它们存储在一个全局对象(关联数组)例如,但这应该让你去。