If statement 自动热键脚本-热字符串阻止if语句工作

If statement 自动热键脚本-热字符串阻止if语句工作,if-statement,autohotkey,If Statement,Autohotkey,上面的代码不适用于按键“\” 但是,下面的代码在没有热字符串的情况下工作 :*:pl::pleaseHelpMe ; hotstring :*:rf::reallyConfused ; hotstring toggle := 0 \:: if (toggle = 0) { Run "https://www.google.com.sg/" } return 为什么会这样?我如何绕过它,使用我的热字符串和击键“\”打开谷歌。非常感谢 不能在热键或热字符串之间定义变量 必须定义一个变

上面的代码不适用于按键“\”

但是,下面的代码在没有热字符串的情况下工作

:*:pl::pleaseHelpMe     ; hotstring

:*:rf::reallyConfused   ; hotstring

toggle := 0
\::
if (toggle = 0)
{
Run "https://www.google.com.sg/"
}
return

为什么会这样?我如何绕过它,使用我的热字符串和击键“\”打开谷歌。非常感谢

不能在热键或热字符串之间定义变量

必须定义一个变量

  • 在脚本的自动可执行部分(脚本顶部, 在第一次返回或热键之前)
  • 或者在热键中
  • 或者在函数中
示例:

toggle := 0
\::
if (toggle = 0)
{
Run "https://www.google.com.sg/"
}
return

用户3419297是错误的。自动热键在使用前不需要定义变量。如果未定义变量,则在求值过程中会自动将其值设为False或0

这段代码有效,我只在热键中添加了$option以防止热键自动触发:

; top of the script:
toggle := 0
    return      ; end of auto-execute section

; toggling a variable:
F1:: toggle := !toggle  ; Pressing F1 changes the value of the variable "toggle" between 1 (true) and 0 (false)

:*:pl::pleaseHelpMe     ; hotstring
:*:rf::reallyConfused   ; hotstring

\::
if (toggle) ; If the value of the variable "toggle" is 1 (true)
    Run "https://www.google.com.sg/"
else
    Send, \
return

为什么要使用热字符串?它们似乎没有任何用处。热字符串终止代码行的自动执行,请参阅<代码>切换:=0永远不会执行,因此
切换=0
永远不会变为真。将脚本开始时要执行的所有内容放在第一个热键/hotstring/子例程之前。@2501,我的脚本实际上要长得多;我只是隔离了有问题的部分。正如你所看到的,这些只是例子;“我不想把:*:PWD::当然,No.TopTutMualRealpWDWDOW:”我想请你更改你所选的答案,你得到了错误的信息,看我的答案,决定哪一个是正确的。在自动可执行的部分中定义变量的默认值是不对的。抱歉,解释器在评估true或fslse时不需要它。你错了,你的答案错了。他的代码唯一的错误是没有一个$s选项来触发热键,答案是正确的。如果未在“自动可执行文件”部分定义变量的默认值,则会收到缺少全局声明的警告。启用“警告”后,您将看到此消息。考虑编辑你的帖子来澄清这一点吗?如果没有#Warn,代码的执行和执行不会出现任何问题,事实上,我从未见过从未声明的全局或局部变量执行Bool操作或甚至增量操作会产生任何不良影响,但我的脚本中没有使用#Warn,因此这在op的代码中不是问题,除非启用了警告。据我所知:#建议使用警告来捕获常见错误。它还区分已由脚本初始化的变量和未初始化的变量。在这种情况下,没有错误消息,只有警告。如果您收到此警告(“此变量未赋值”),答案显然是为该变量赋值。
; toggling a variable:
F1:: toggle := !toggle  ; Pressing F1 changes the value of the variable "toggle" between 1 (true) and 0 (false)

:*:pl::pleaseHelpMe     ; hotstring
:*:rf::reallyConfused   ; hotstring

$\::
if (toggle) ; If the value of the variable "toggle" is 1 (true)
    Run "https://www.google.com.sg/"
else
    Send, \
return

esc::exitApp