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を使用して、1つのホットキーを定義し、ホットキー内にIFステートメントを配置して、状態変数に基づいて動作を変更します。

于 2013-01-18T19:56:34.153 に答える