我已經編寫了包含許多熱鍵的腳本(一般結構如下)。我想創建另一個按下時顯示一個列表中的所有熱鍵及其相應的描述,腳本包含在一個不錯的格式化表格中。顯示AutoHotkey熱鍵列表
由於AutoHotkey的輸出僅限於消息框,但可能會導致格式化和顯示效果不佳。更麻煩的是獲取熱鍵和相應的描述。
熱鍵全部調用具有不同參數的相同函數。我考慮在函數中添加一個變量,以便取決於該值,函數可以在普通熱鍵觸發時執行普通函數,或者在特殊顯示熱鍵觸發時生成字符串或其他內容。
我找不出一種以編程方式訪問腳本的熱鍵的方法。我檢查了文檔,似乎沒有任何A_
變量可以用於此目的,Hotkey
命令也不適用(它可以用來測試熱鍵是否存在,但循環無數組合是,至多,單調乏味)。
失敗的嘗試:
- 我嘗試使用解析腳本本身(替換用%A_ScriptFullPath%的路徑艾略特的建議,雖然它的工作爲原始腳本,當腳本編譯它不
- 我試着將腳本的整個熱鍵部分分配給一個變量作爲延續部分,然後使用
Hotkey
命令解析變量並創建熱鍵。直到最後一部分這個工作正常,因爲Hotkey
命令不能執行任意命令作爲目的地,並要求已有標籤。 ListHotkeys
命令不適用,因爲它只在控制窗口中以純文本形式顯示熱鍵。
有誰知道我可以如何顯示熱鍵列表及其相應的參數或註釋?
示例腳本:
SomeFunc(foobar)
{
MsgBox %foobar%
}
!^#A::SomeFunc("a") ; blah
^+NumpadMult::SomeFunc("c") ; blivet
^+!#`::SomeFunc("b") ; baz
^#Space::SomeFunc("d") ; ermahgerd
…
實施例期望的「輸出」:
C+A+ W+ A a | C+ S+ NumpadMult b
------------------+----------------------
C+A+S+W+ ` c | C+ W+ Space d
或
Ctrl Alt Shift Win Key Action
-----------------------------------------
× × × A blah
× × NumpadMult baz
× × × × ` blivet
× × Space ermahgerd
etc.
哎唷!這當然不是理想的。雖然有趣的想法,我想它可以爲一個簡單的腳本(像這樣),只需要做一次。我會檢查是否有一種方法可以訪問文件名,而不是硬編碼。 – Synetech
而不是硬編碼路徑,可以使用'A_ScriptFullPath'。我解析了修飾符以顯示'CASW'而不是'^!+#',並修剪了空白。目前我正在更好地格式化它(不幸的是,messagebox的寬度有限,並使用比例字體,這意味着文本未對齊或每行一個熱鍵)。我可能最終會構建一個GUI來顯示熱鍵,但上面的方法對解析它們非常適用,尤其是因爲它只需在啓動時執行一次(至少在添加內置方法以訪問它們在一個數組或其他東西)。乾杯。 – Synetech
呃哦!大問題。如果編譯腳本,此方法不起作用。 '':-( – Synetech