1

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

“您的帖子没有太多上下文来解释代码部分;请更清楚地解释您的情况。”。所以我想需要解释我的代码。这非常简单,我有一个通过按箭头键更改的状态变量,然后我有 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
}
4

1 回答 1

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,您可以定义 ONE 热键并将 IF 语句放在热键中以根据状态变量更改行为。

于 2013-01-18T19:56:34.153 回答