使用 CTRL+W 进行 AutoHotKey WinClose

使用 CTRL+W 进行 AutoHotKey WinClose

我用的是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

使用$以防止在使用时多次触发发送命令。 $

相关内容