WinClose

关闭指定的窗口.

WinClose WinTitle, WinText, SecondsToWait, ExcludeTitle, ExcludeText

参数

WinTitle, WinText, ExcludeTitle, ExcludeText

类型: 字符串, 整数对象

如果这些都是空白或省略, 将使用上次找到的窗口. 否则, 为 WinTitle 指定窗口标题或其他条件, 来标识目标窗口, 和/或为 WinText 指定目标窗口的单个文本元素的子字符串(由包含的 Window Spy 实用程序显示).

ExcludeTitleExcludeText 可用于根据标题或文本排除一个或多个窗口. 它们的规范类似于 WinTitleWinText, 除了 ExcludeTitle 不识别除窗口标题之外的任何条件.

窗口标题和文本是区分大小写的. 默认情况下, 不检测隐藏窗口, 而检测隐藏文本元素, 除非使用 DetectHiddenWindowsDetectHiddenText 进行更改. 默认情况下, 窗口标题的任意位置包含 WinTitleExcludeTitle 就能形成匹配, 除非使用 SetTitleMatchMode 进行了更改.

SecondsToWait

类型: 整数浮点数

如果省略, 此函数不会等待. 否则, 请指定秒数(可以为小数) 来等待窗口关闭. 如果窗口在此期间没有关闭, 那么脚本会继续执行.

错误处理

如果找不到窗口, 则抛出 TargetError, 除非使用了 group 模式.

如果找到了一个窗口但无法关闭, 则不会抛出异常, 因此, 如果你需要确定窗口已经关闭, 请使用 WinExistWinWaitClose.

备注

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

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

此函数仅对单独一个窗口起作用, 除非 WinTitleahk_group GroupName(没有其他指定条件), 在这种情况下, 组中的所有窗口均会受到影响.

当函数处于等待状态时, 可以通过热键, 自定义菜单项计时器来启动新的线程.

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

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

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

WinKill, WinWaitClose, ProcessClose, WinActivate, SetTitleMatchMode, DetectHiddenWindows, Last Found Window, WinExist, WinActive, WinWaitActive, WinWait, GroupActivate

示例

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

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