【发布时间】:2012-09-22 23:26:33
【问题描述】:
我编写了包含许多热键的脚本(一般结构如下)。我想创建另一个,按下时会显示所有热键的列表以及脚本包含在一个漂亮的格式化表格中的相应描述。
由于 AutoHotkey 的输出仅限于消息框,因此格式和显示很脆弱,但可能。更多的问题是获取热键和相应的描述。
热键都以不同的参数调用相同的函数。我考虑在函数中添加一个变量,以便根据值,该函数在由普通热键触发时执行普通函数,或者在由特殊显示热键触发时构建一个字符串或其他东西。
我根本想不出一种以编程方式访问脚本热键的方法。我检查了文档,似乎没有任何A_ 变量可用于此目的,Hotkey 命令也不能很好地发挥作用(它可用于测试热键是否存在,但循环无数的组合充其量是乏味的)。
尝试失败:
- 我尝试使用 Elliot 的建议来解析脚本本身(将路径替换为 %A_ScriptFullPath%,虽然它适用于原始脚本,但在编译脚本时却不起作用
- 我尝试将脚本的整个热键部分分配给一个变量作为延续部分,然后解析变量并使用
Hotkey命令创建热键。这一直到最后一部分都运行良好,因为Hotkey命令不能将任意命令作为目标,并且需要现有标签。 -
ListHotkeys命令不适用,因为它仅在控制窗口中将热键显示为纯文本。
有谁知道如何显示热键列表及其对应的参数或 cmets?
示例脚本:
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.
【问题讨论】:
标签: autohotkey tabular hotkeys