为什么是`#f::true? MsgBox true : 运行 记事本什么都不做?

Why `#f::true ? MsgBox true : Run notepad` does nothing?

我希望 #f::true ? MsgBox true : Run notepad 在按下 #f 时会打开一个带有“true”的消息框,但实际上它什么也没做,谁能解释一下这种行为背后的机制?

命令仅在行首有效,不能内联使用。
您正在做的是将两个变量连接在一起。名为 MsgBox 的变量和名为 true (或 Runnotepad[=28= 的变量].

您只能使用内联表达式。
在 AHK v1 中,您当然可以将遗留命令包装在一个函数中,然后内联使用该函数:

#f::true ? MsgBoxFunc(true) : RunFunc("notepad")

MsgBoxFunc(Options := "", Title := "", Text := "", Timeout := "")
{
    if (Options && (!Title && !Text && !Timeout))
        MsgBox, % Options
    else
        MsgBox, % Options, % Title, % Text, % Timeout
}

RunFunc(Target, WorkingDir := "", Options := "", ByRef OutputVarPID := "")
{
    Run, % Target, % WorkingDir, % Options, pid
    OutputVarPID := pid
}

或者在AHK v2中,当然不存在这个问题:

#f::true ? MsgBox(true) : Run("notepad")