我用的是WinClose 脚本在 AutoHotKey 中使用Ctrl+ w(^w) 关闭窗口。由于Ctrl+w有时已经是关闭窗口(或 Firefox 中的选项卡)的快捷方式,我再次发送Ctrl+ w,我猜这会以无限循环结束。我该如何解决这个问题?
这是错误信息:
这是我的脚本:
;;; make the “CTRL+W” key to close window or tab.
; which key to send depends on the application
^w::
IfWinActive ahk_class ATH_Note
{ ; ATH_Note is Windows Mail
; Ctrl+F4
Send !{F4}
}
IfWinActive ahk_class Notepad
{ ; Alt+F4
Send !{F4}
}
Else IfWinActive ahk_class Outlook Express Browser Class
{ WinMinimize, A
}
Else IfWinActive ahk_class IrfanView
{ Send {Esc}
}
Else ; IE, Firefox, Google Chrome, Opera
{ Send ^w
}
Return
答案1
我会尝试使用上下文相关热键而不是在按键时检查活动窗口。您的其他热键仍然有效,但由于您的浏览器未指定,它们将保持其正常功能。我使用以下代码创建了您想要的功能:
#IfWinActive ahk_class ATH_Note
^w::Send !{F4}
#IfWinActive
#IfWinActive ahk_class Notepad
^w::Send !{F4}
#IfWinActive
#IfWinActive ahk_class Outlook Express Browser Class
^w::WinMinimize, A
#IfWinActive
#IfWinActive ahk_class IrfanView
^w::Esc
#IfWinActive
如果程序之间有一些共享的热键,您也可以创建组:
GroupAdd, FileExplorer, ahk_class EVERYTHING
GroupAdd, FileExplorer, ahk_class CabinetWClass
GroupAdd, FileExplorer, ahk_class #32770
#IfWinActive ahk_group FileExplorer
^w::WinMinimize, A
#IfWinActive
答案2
我看你没有返回在 if 语句中这意味着循环直到脚本崩溃,还必须加上 else return,...尝试这种方法。
編輯:
$^w::
IfWinActive ahk_class ATH_Note
{ ; ATH_Note is Windows Mail
; Ctrl+F4
Send !{F4}
}
IfWinActive ahk_class Notepad
{ ; Alt+F4
Send !{F4}
}
Else IfWinActive ahk_class Outlook Express Browser Class
{ WinMinimize, A
}
Else IfWinActive ahk_class IrfanView
{ Send {Esc}
}
else
{
Send ^{w}
return
}
Return
使用$以防止在使用时多次触发发送命令。 $