Autohotkey 在同一脚本中使用双冒号::和热键命令会破坏一个

Autohotkey 在同一脚本中使用双冒号::和热键命令会破坏一个,autohotkey,hotkeys,Autohotkey,Hotkeys,我有一个脚本中最奇怪的行为。在下面的MWE中,只要F1行在那里,热键F2声明就不起作用。如果我注释掉第2行,那么热键就可以正常工作了 #SingleInstance, Force F1::MsgBox You pressed F1 Hotkey F2, Alone return Alone: MsgBox You pressed F2. return 双冒号表示法和“热键”命令之间是否存在交互作用?有办法解决这个问题吗 当然,这是定义了几个不同热键的较大脚本的一部分。代码中的大多数热键都使用

我有一个脚本中最奇怪的行为。在下面的MWE中,只要
F1
行在那里,
热键F2
声明就不起作用。如果我注释掉第2行,那么热键就可以正常工作了

#SingleInstance, Force
F1::MsgBox You pressed F1
Hotkey F2, Alone
return

Alone:
MsgBox You pressed F2.
return
双冒号表示法和“热键”命令之间是否存在交互作用?有办法解决这个问题吗

当然,这是定义了几个不同热键的较大脚本的一部分。代码中的大多数热键都使用了双冒号符号,但我认为必须使用热键命令来表示动态键(比如通过ini文件定义的热键)。这段代码是带有静态热键(使用双冒号表示法)的较大代码集的一部分,我无法更改这部分代码

我正在Windows Enterprise 1909(OS Build 18363.720)上运行Autohotkey v1.1.25.02


注意:我注意到,如果我将双冒号声明放在
热键
命令之后(即重新排序的第2行和第3行),它似乎可以工作。我不知道这是否是一种选择。原始脚本中有数百行代码。我仍然想知道导致这种行为的原因。

您正在创建一个单行热键
F1

代码执行将不会继续到下面的行

以下是您要查找的语法:

#SingleInstance, Force

F1::
    MsgBox, You pressed F1
    Hotkey, F2, Alone
return

Alone:
    MsgBox, You pressed F2.
return

实际上,F1和F2热键是独立的热键。我不想把热键F2单独放在F1调用的进程中。也许添加第一行
return
不是正确的做法,但我注意到如果我不这样做,脚本将在脚本启动时“单独”运行子进程。我将尝试将F1热键设置为多行程序,看看是否可以修复它。在这种情况下,
返回
没有任何作用,您应该在中使用
热键
命令。最初运行脚本时,代码执行会在遇到的第一个热键标签处停止。
热键
命令从未在代码中执行。是的,自动执行部分将进入标签,除非您在标签之前停止代码执行。(旁注,标签是传统的,使用函数)好吧,我很困惑。
Hotkey
命令不被执行,因为它不在autoexecute部分,该部分在第2行的热键声明处结束。但是,通过下面的标签继续执行(第4行的
返回
)?这些似乎相互矛盾。对不起我的问题,我唯一的正式语言培训是在LaTeX。该标签用于b/c,这是命令文档中最简单的示例。这不是绝对必要的。否,在这种特殊情况下,自动执行部分确实不会转到标签,因为热键标签(以及
返回值
)会先停止代码执行。在您的第一条评论中,您刚刚提到了标签中的代码在您不希望它发生的时候是如何执行的,所以我刚才提到了在这些情况下的原因是代码执行向标签中渗透。