AutoHotkey,没有得到解决方案

AutoHotkey,没有得到解决方案

我真的需要你的帮助。我试图编写一个 AutoHotkey 脚本,但我还没有找到可行的解决方案。

我当前的 AutoHotkey 脚本是:

#IfWinActive Guild Wars 2
shift & 1::
Send, 1
sleep 500
Send, y
return

因此,当我在公会战争中按住并Shift按下时1,它将执行我的宏。因此,我可以发送垃圾邮件1(同时按住Shift),它会一次又一次地执行。问题是,我总是需要按住Shift。我的愿望是,当我按下Shift一次时,它会在我发送垃圾邮件时始终执行宏1。但它应该只在我按下另一个键(Ctrl,, )之前执行宏。因此F1,F2如果我按下另一个键,它应该正常执行1(因此没有宏)。

  • 按下Shift一次并发送垃圾邮件1=我的宏
  • Ctrl按下诸如、之类的键后F1,F2它应该执行正常操作1(无宏)。

答案1

这将达到目的:

#ifWinActive Guild Wars 2

shift::  ; Shift to toggle auto-spammer
    hotkey, ifWinActive, Guild Wars 2
    hotkey, $1, shift_1, on
    loop {
        input, keystroke, l1 v, {LControl}{RControl}{LAlt}{RAlt}{LShift}{RShift}{LWin}{RWin}{AppsKey}{F1}{F2}{F3}{F4}{F5}{F6}{F7}{F8}{F9}{F10}{F11}{F12}{Left}{Right}{Up}{Down}{Home}{End}{PgUp}{PgDn}{Del}{Ins}{BS}{Capslock}{Numlock}{PrintScreen}{Pause}
        if keystroke not contains 1
            break
    }
    hotkey, $1, off
return

shift_1:
    send 1
    sleep 500
    send y
return

或者,如果您想要Shift切换修改X热键1- 9

#ifWinActive Guild Wars 2

X = 9  ; Set this to the number of keys you want to be auto-spammable

loop %X% {  ; Create hotkeys 0-X
    hotkey, ifWinActive, Guild Wars 2
    hotkey, $%a_index%, autoSpammer
}

shift::  ; Shift to toggle auto-spammer
    autoSpam = on
    loop {
        input, keystroke, l1 v, {LControl}{RControl}{LAlt}{RAlt}{LShift}{RShift}{LWin}{RWin}{AppsKey}{F1}{F2}{F3}{F4}{F5}{F6}{F7}{F8}{F9}{F10}{F11}{F12}{Left}{Right}{Up}{Down}{Home}{End}{PgUp}{PgDn}{Del}{Ins}{BS}{Capslock}{Numlock}{PrintScreen}{Pause}
        if regExMatch(keystroke, "[^0-9]")
            break 
    }
    autoSpam = off
return

autoSpammer:
    thisHotkey := regExReplace(a_thisHotkey, "[^0-9]")
    if autoSpam = on
    {
        sendInput %thisHotkey%
        sleep 500
        sendInput y
    }
    else
        send %thisHotkey%
return

相关内容