不递归的重新映射



我在自动上很新,以前(很多)与autohotkey一起工作。

这是我尝试从Autoit文档中重写其中一个脚本的尝试。我更改的唯一部分是底部一个(TAB键)。

我要实现的目标:如果当前窗口是记事本,请发送ctrl-tab而不是选项卡。否则,发送正常选项卡。

好吧,我明白,为什么此代码会导致递归,但是我如何避免它?

#include <MsgBoxConstants.au3>
; Press Esc to terminate script, Pause/Break to "pause"
Global $g_bPaused = False
HotKeySet("{PAUSE}", "HotKeyPressed")
HotKeySet("{ESC}", "HotKeyPressed")
HotKeySet("{TAB}", "HotKeyPressed")
While 1
    Sleep(100)
WEnd
Func HotKeyPressed()
    Switch @HotKeyPressed
        Case "{PAUSE}"
            $g_bPaused = Not $g_bPaused
            While $g_bPaused
                Sleep(100)
                ToolTip('Script is "Paused"', 0, 0)
            WEnd
            ToolTip("")
        Case "{ESC}"
            Exit
        Case "{TAB}"
            If WinActive("[CLASS:Notepad]") Then
                Send("^{TAB}")
            Else
                Send("{TAB}")
            EndIf
    EndSwitch
EndFunc

暂时禁用热键:

Case "{TAB}"
    HotKeySet("{TAB}")  ;Cancel (or unregister) the hotkey
    If WinActive("[CLASS:Notepad]") Then
        Send("^{TAB}")
    Else
        Send("{TAB}")
    EndIf
    HotKeySet("{TAB}", "HotKeyPressed") ;re-enable hotkey
EndSwitch

相关内容

  • 没有找到相关文章

最新更新