我如何在不同的if语句中使用相同的热键

时间:2013-01-18 17:41:56

标签: autohotkey

我的代码如下。无论何时我尝试运行它,我都会收到错误消息,说我在使用重复的热键时实际上它们永远不会互相干扰。我该如何解决这个问题?

“您的帖子没有太多的背景来解释代码部分;请更清楚地解释您的情景。”所以我想需要解释一下我的代码..这非常简单我有一个状态变量,通过按箭头键改变,然后我有if语句来检查状态是什么。如果我在state =“up”时按下numpad1,脚本应该键入“A”,如果state =“right”,它将打印I.但是我收到错误,因为我在不同的if语句中多次使用相同的热键

state := "none"
UP::
state := "up"
Right::
state := "right"
DOWN::
state := "down"
LEFT::
state := "left"

if (state = "up"){
Numpad1::
Send A
Return
Numpad2::
Send B
Return
Numpad3::
Send C
Return
Numpad4::
Send D
Return
Numpad6::
Send E
Return
Numpad7::
Send F
Return
Numpad8::
Send G
Return
Numpad9::
Send H
Return
}

if (sate = "right"){
Numpad1::
Send I
Return
Numpad2::
Send J
Return
Numpad3::
Send K
Return
Numpad4::
Send L
Return
Numpad6::
Send M
Return
Numpad7::
Send N
Return
Numpad8::
Send O
Return
Numpad9::
Send P
Return
}

if (state = "down"){
Numpad1::
Send Q
Return
Numpad2::
Send R
Return
Numpad3::
Send S
Return
Numpad4::
Send T
Return
Numpad6::
Send U
Return
Numpad7::
Send V
Return
Numpad8::
Send W
Return
Numpad9::
Send X
Return
}

if (state = "left"){
Numpad1::
Send Y
Return
Numpad2::
Send Z
Return
}

1 个答案:

答案 0 :(得分:0)

当您使用AHK_L时,您可以将#IF与同一热键的多个定义一起使用。警告这不适用于常规的AHK版本。

这是一个例子。 您可以通过键入none \ right \或left \来设置变量。 根据变量设置,Tab键将发送NORMAL,LEFT或RIGHT。

#SingleInstance Force

Tab::Send, NORMAL

#if (state = "left")
    Tab::Send, LEFT
#if ; End #if (state = "left")

#if (state = "right")
    Tab::Send, RIGHT
#if ; End #if (state = "right")

:*:right\::
    state := "right"
Return

:*:left\::
    state := "left"
Return

:*:none\::
    state := "none"
Return

或者,使用正常的AHK,您可以定义一个热键,并将IF语句放在热键中,以根据状态变量更改行为。

相关问题