autohotkey - 如何制作它以便您可以更改 GUI 中的热键?- 自动热键
问题描述
代码:
Gui, Add, Text,, ------------------------------------------Key Delay------------------------------------------
Gui, Add, Edit, w300 vKeyDelay, 100
Gui, Add, Text,, ------------------------------------------Key Input------------------------------------------
Gui, Add, Edit, R10 w300 vKeyPlayer
Gui, Add, Text,, ------------------------------------------Key Start------------------------------------------
Gui, Add, Edit, w300 vStartKey, F2
Gui, Show
F2::
!F2::
Gui, Submit, Nohide
SetKeyDelay, %KeyDelay%
Send, %KeyPlayer%
return
GuiClose:
ExitApp
开始键设置为 F2,我想这样做,以便人们能够将其更改为任何值,(F1、F2、F3、A、B、C、1-10 等)
如何制作它以便您可以更改 gui 中的热键?
解决方案
您将使用该Hotkey
命令在运行时创建热键。
要在 gui 中选择热键,最简单(但不是最好)的选项是hotkey control。
它肯定是最简单的,对最终用户也很方便,但它不支持常规热键以外的任何内容。要获得更好的方法,您需要一个自定义方法。
这是我通过 Google 搜索找到的第一个自定义项。自己没用过,应该是好东西。
您也可以使用的一个非常简单但功能强大的自定义控件只是一个Edit
控件。如果您希望您的最终用户足够聪明,可以输入诸如!F1
、+#k
、之类的东西,那么效果会非常好d & o
。
无论如何,我将在这里演示内置热键控件的用法。如果您想自己弄清楚,请立即停止阅读。
首先,创建 gui 并将变量和g-label关联到热键控件。
虽然,我将使用函数而不是标签,但我不喜欢编写遗留 AHK。
Gui, Add, Hotkey, % "x50 y25 w90 h30 vChosenHotkey gHotkeyChanged"
Gui, Show, % "w200 h100"
Return
HotkeyChanged
然后需要定义g-label ,我将使用一个函数而不是一个标签,如上所述。
HotkeyChanged()
{
global ChosenHotkey
Gui, Submit, NoHide
Hotkey, % ChosenHotkey, MyHotkey, On
}
而且在使用函数时,您必须担心范围,这就是global ChosenHotkey
指定的原因。
在那里我告诉函数我将使用在其范围之外定义的变量。
如果范围是您还不知道的东西,并且还不想了解它们,您可以编写旧版 AHK 并使用标签并忘记所有这些。
要了解一般编程中的作用域,您可能可以从 Google 中找到一些不错的东西。
为了在 AHK 中专门了解它们,我在此处有一个关于它们的先前答案,这里是相关文档页面。
然后我得到 make 脚本用 更新其关联变量Gui, Submit
,您似乎已经知道这一点。
然后我得到Hotkey
命令。
第一个参数是要使用的热键,它存储在ChosenHotkey
变量中。
第二个参数是标签/函数名称,或函数对象。我将使用函数名称MyHotkey
。
并且在第三个参数On
中指定打开热键并可能替换任何以前的任何以前的热键。
MyHotkey
然后需要定义函数或标签:
MyHotkey()
{
MsgBox, % "Hotkey pressed!"
}
就是这样。
如果您想保存以前使用的热键,然后在脚本重新启动时再次使用它,有很多选项,所有这些基本上都归结为将热键保存到某个文件的想法。
这是完整的脚本:
Gui, Add, Hotkey, % "x50 y25 w90 h30 vChosenHotkey gHotkeyChanged"
Gui, Show, % "w200 h100"
return
HotkeyChanged()
{
global ChosenHotkey
Gui, Submit, NoHide
Hotkey, % ChosenHotkey, MyHotkey, On
}
MyHotkey()
{
MsgBox, % "Hotkey pressed!"
}
GuiClose()
{
ExitApp
}
推荐阅读
- flutter - 如何在 ffmpeg 执行中添加 Flutter AppDirectory 路径
- c# - 使用 c# 的 Cron 表达式在几分钟和几秒钟内不起作用
- reactjs - “subscribeToMore”Apollo 客户端订阅行为怪异
- java - 在 Java 中,使用 && 运算符,它会计算所有实例并最终确定还是一旦找到 false,它会立即返回 false
- xor - 使用 XOR 解密?
- php - 循环遍历数组内数组内的数组,该数组可能无限深
- python - 弹性搜索请求
- regex - 在 Dart 中使用 RegEx 获取字符串的一部分
- kubernetes - StatefulSets 中的并行 podManagementPolicy 优于 OrderedReady podManagementPolicy 的优缺点是什么?
- r - Bootstrapping 95% CI 根据编码方式给出不同的值