0

PC への特定のゲーム ポートの非常に面倒な「スプリント」アクションに対処するために、AutoHotkey で次のように記述しました。

#SingleInstance,Force
#NoEnv
CoordMode,Mouse,Screen
DetectHiddenWindows,On
StringTrimRight,applicationname,A_ScriptName,4
OnExit,EXIT
Gosub,TRAYMENU

; Set the first run to turn on the loops
breakera = 0
loopa = 1
breakerw = 0
loopw = 1

Shift & LAlt::
IfWinExist,Bully
    {
        If loopa = 0
            {
                loopa := !loopa
                breakera := !breakera
            }
            else
            {
                loopa := !loopa
                breakera := !breakera
                Loop
                    {
                        Send {LAlt}
                        Sleep, 1000
                        if breakera = 1
                            {
                                break
                            }
                    }
            }
    }
    else
        { 
            Gosub,BULLYERROR
        }
Return

Shift & W::
IfWinExist,Bully
    {
        If loopw = 0
            {
                loopw := !loopw
                breakerw := !breakerw
            }
            else
            {
                loopw := !loopw
                breakerw := !breakerw
                Loop
                    {
                        Send {w}
                        Sleep, 1000
                        if breakerw = 1
                            {
                                break
                            }
                    }
            }
    }
    else
        { 
            Gosub,BULLYERROR
        }
Return

BULLYERROR:
Gui,97:Destroy
Gui,97:Margin,20,20
Gui,97:Font
Gui,97:Add,Text,y+10 yp+10,Bully is not running!
Gui,97:Show,,Error
Return

このコードは正確には効率的ではありませんが、それでも機能するように見えますが、機能しません (subs の欠落について心配する必要はありません。単なるスニペットです)。

私の意図は、+を押すと、もう一度Shift+を押すまで毎秒Key繰り返されるようにすることです。KeyShiftKey

何か案は?ありがとう!

4

1 に答える 1

0

このようなものを使用してください。

Shift & LAlt::
  If AltRepeating = true
  {
    SetTimer, RepeatAlt, Off
    AltRepeating = false
  }
  Else
  {
    Send, {lAlt}
    SetTimer, RepeatAlt, 1000
    AltRepeating = true
  }


RepeatAlt:
  Send, {LAlt}
Return
于 2011-01-27T20:37:56.370 に答える