AutoHotKey - 创建状态相关的热键

AutoHotKey - Creating state dependent hotkeys

是否可以使用 AutoHotKey 创建状态相关的热键?我知道在使用 #IfWinActive 时可以在依赖状态下创建某些热键,但是如何在热键内部创建热键呢?

例子

F1::
    Gui, Show, center center h500 w500, Just a window
    return

    F2::
        MsgBox, 0, F2, You have pressed F2 inside the F1 hotkey
    return
return

这里的问题是F2不依赖于状态,一按就会触发。

可能的解决方案

F1::
    state := true

    Gui, Show, center center h500 w500, Just a window
    return

    #If (state = true)
    {
        F2::
            MsgBox, 0, F2, You have pressed F2 inside the F1 hotkey
        return
    }

    GUIclose:
        Gui, destroy
        state := false
    return
return

这是一个可行的解决方案,效果很好。但是,有没有比这样做更简单的解决方案?

不完全是 "easier",但我觉得更好看,也是我喜欢的方式:

F1::
    Hotkey, F2, F2_action, ON
    Gui, Show, center center h500 w500, Just a window
return

F2_action: ; this is a label not a hotkey
    MsgBox, 0, F2, You have pressed F2 inside the F1 hotkey
return

GUIclose:
    Gui, destroy
    Hotkey, F2, F2_action, OFF
return

我在这里使用了hotkey命令,它是专门为

设计的

but how about creating hotkeys inside a hotkey itself

我会在 #If

中添加 2 个条件
F1::
    state := true
    Gui, Show, center center h500 w500, Just a window
Return

#If state and WinActive("Just a window")
    F2::MsgBox, 0, F2, You have pressed F2 inside the F1 hotkey
#If

不确定这是否是您在说尝试过时已经排除的问题 #IfWinActive