2016-07-29 64 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 
} 

有一些更優雅的方式做到這一點,尤其是與變量,你可以將它們存儲在一個全局對象(關聯數組)例如,但這應該讓你去。