WinClose

关闭指定的窗口.

WinClose , WinTitle, WinText, SecondsToWait, ExcludeTitle, ExcludeText

参数

WinTitle

窗口标题或识别目标窗口的其他条件. 请参阅 WinTitle.

WinText

如果使用此参数, 那么它必须是目标窗口中单个文本元素的子字符串(和内置的 Window Spy 工具显示的一样). 当 DetectHiddenText 的设置为 ON 时, 那么会检测到隐藏文本元素.

SecondsToWait

如果省略或为空, 此命令会完全不等待. 如果为 0, 则它会等待 500 ms. 否则, 它会等待指定的秒数(可以为小数或表达式) 来让窗口关闭. 如果窗口在此期间没有关闭, 那么脚本会继续执行. 此命令 不会 设置 ErrorLevel, 所以如果您需要确定窗口是否关闭时请使用 WinExist(), IfWinExistWinWaitClose. 当此命令处于等待状态时, 可以通过热键, 自定义菜单项计时器启动新的线程.

ExcludeTitle

标题中含有此参数值的窗口将被排除.

ExcludeText

文本中含有此参数值的窗口将被排除.

备注

此命令发送关闭消息到窗口. 结果取决于窗口(它可能会询问是否保存数据等).

如果匹配窗口是活动的, 那么会优先关闭此窗口而不是其他匹配窗口. 一般而言, 如果有多个匹配窗口, 那么会关闭最上面的(最近使用的) 窗口.

此命令仅对一个窗口进行操作, 除非 WinTitleahk_group GroupName(没有其他条件指定), 在这种情况下, 组中的所有窗口都受到影响.

WinClose 发送 WM_CLOSE 消息到目标窗口, 这种关闭方法有些强制性. 关闭窗口的另一种方法是发送下面的消息. 它可能会产生与此命令不同的行为, 因为它类似于按下 Alt+F4 或点击窗口标题栏的关闭按钮的效果:

PostMessage, 0x0112, 0xF060,,, WinTitle, WinText  ; 0x0112 = WM_SYSCOMMAND, 0xF060 = SC_CLOSE

如果使用 WinClose 无法关闭窗口, 那么您可以使用 WinKill 来强制关闭.

窗口标题和文本是区分大小写的. 只有在打开 DetectHiddenWindows 设置时, 才能检测到隐藏窗口.

WinKill, WinWaitClose, Process, WinActivate, SetTitleMatchMode, DetectHiddenWindows, 上次找到的窗口, WinExist(), WinActive(), WinWaitActive, WinWait, GroupActivate

示例

如果记事本确实存在, 关闭它, 否则关闭计算器.

if WinExist("Untitled - Notepad")
    WinClose ; 使用 WinExist 找到的窗口
else
    WinClose, Calculator
unixetc