【问题标题】:How to make it so you could change the hotkey in the GUI? - AutoHotkey如何制作它以便您可以更改 GUI 中的热键? - 自动热键
【发布时间】:2023-03-20 01:48:01
【问题描述】:

代码:

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 中的热键?

【问题讨论】:

    标签: autohotkey


    【解决方案1】:

    您可以在运行时使用Hotkey 命令创建热键。
    要在 gui 中选择热键,最简单(但不是最好)的选项是 hotkey control
    它肯定是最简单的一种,对最终用户也很方便,但它不支持普通热键以外的任何东西。要获得更好的方法,您需要一个自定义方法。

    This 是我通过 Google 搜索找到的第一个自定义的。我自己没用过,但它可能是好东西。
    您也可以使用一个非常简单但功能强大的自定义控件,它只是一个Edit 控件。如果您希望您的最终用户足够聪明,可以输入 !F1+#kd & o 或其他任何内容,则效果很好。


    无论如何,我将在这里演示内置热键控件的用法。如果您想自己弄清楚,请立即停止阅读。

    首先,创建 gui 并将一个变量和一个 g-label 关联到热键控件。
    不过,我将使用函数而不是 label,但我不喜欢编写旧版 AHK。

    Gui, Add, Hotkey, % "x50 y25 w90 h30 vChosenHotkey gHotkeyChanged"
    Gui, Show, % "w200 h100"
    Return
    

    那么就需要定义g-labelHotkeyChanged了,我就用函数代替label,如上所述。

    HotkeyChanged()
    {
        global ChosenHotkey
        
        Gui, Submit, NoHide
        Hotkey, % ChosenHotkey, MyHotkey, On
    }
    

    而且在使用函数时,您必须担心作用域,这就是指定 global ChosenHotkey 的原因。
    在那里我告诉函数我将使用在其范围之外定义的变量。
    如果您还不知道作用域,并且还不想了解它们,您可以编写旧版 AHK 并使用标签,然后忘记这一切。
    要了解一般编程中的作用域,您可能可以从 Google 中找到一些不错的东西。
    为了在 AHK 中了解它们,我在相关文档页面上有一个关于它们的先前答案 herehere's

    然后我让脚本用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
    }
    

    【讨论】:

    • 我尝试使用给定的脚本,我将它集成到我自己的项目中,我注意到的一个问题是所有以前的热键集(F1、F2、F3)和当前是 F4,那些旧的键仍然像一个活动热键,当只有 F4 可以工作时,我对这个东西很陌生,把我算作新手,我还在想办法..
    • 你能显示代码吗?也许将其编辑到您的 OP 中。
    猜你喜欢
    • 2018-06-05
    • 1970-01-01
    • 2018-11-16
    • 2012-11-16
    • 2020-02-02
    • 1970-01-01
    • 2014-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多