我已经编写了包含许多热键的脚本(一般结构如下)。我想创建另一个按下时显示一个列表中的所有热键及其相应的描述,脚本包含在一个不错的格式化表格中。显示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