Autohotkey脚本 - hotstring阻止if语句起作用

时间:2017-02-01 08:29:43

标签: if-statement autohotkey

:*: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

为什么会这样?我如何绕过它并使用我的热字符串和按键'\'来打开谷歌。万分感谢!

2 个答案:

答案 0 :(得分:0)

您无法在热键或热字串之间定义变量

必须定义变量

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

示例:

; 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

答案 1 :(得分:0)

user3419297错了。 AutoHotkey在使用之前不需要定义变量。如果未定义变量,则在评估期间会自动为其赋值False或0。

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

; 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