我是AutoIt的新手,之前(很多)使用AutoHotkey工作。
这是我尝试从AutoIt文档略微重写其中一个脚本。我唯一改变的部分是底部(Tab键)。
我想要实现的目标:如果当前窗口是记事本,则发送Ctrl-Tab而不是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
答案 0 :(得分:1)
暂时禁用热键:
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