我的代码如下。无论何时我尝试运行它,我都会收到错误消息,说我在使用重复的热键时实际上它们永远不会互相干扰。我该如何解决这个问题?
“您的帖子没有太多的背景来解释代码部分;请更清楚地解释您的情景。”所以我想需要解释一下我的代码..这非常简单我有一个状态变量,通过按箭头键改变,然后我有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
}
答案 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语句放在热键中,以根据状态变量更改行为。