WinClose

优质
小牛编辑
135浏览
2023-12-01

关闭指定的窗口。

WinClose [, WinTitle, WinText, SecondsToWait, ExcludeTitle, ExcludeText]

参数

WinTitle

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

WinText

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

SecondsToWait

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

ExcludeTitle

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

ExcludeText

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

备注

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

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

此命令仅对最上面的匹配窗口进行操作, 除非 WinTitleahk_group GroupName, 此时会影响组中所有窗口.

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

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

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

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

相关

WinKill, WinWaitClose, Process, WinActivate, SetTitleMatchMode, DetectHiddenWindows, 上次找到的窗口, IfWinExist, IfWinActive, WinWaitActive, WinWait, GroupActivate

示例

IfWinExist, Untitled - Notepad
    WinClose ; 使用前面找到的窗口
else
    WinClose, Calculator