WinExist

检查指定的窗口是否存在并返回第一个匹配的窗口的唯一 ID(HWND).

UniqueID := WinExist(WinTitle, WinText, ExcludeTitle, ExcludeText)

参数

WinTitle, WinText, ExcludeTitle, ExcludeText

类型: 字符串, 整数对象

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

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

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

返回值

类型: 整数

函数返回首个匹配窗口的唯一 ID(HWND)(没有找到匹配时则为 0).

因为所有非零数字被视为 "true", 当 WinTitle 存在时, 语句 if WinExist(WinTitle) 为 true.

备注

如果符合条件的窗口存在, 那么上次找到的窗口将更新为此窗口.

要发现控件的 HWND(用于 PostMessage, SendMessageDllCall), 请使用 ControlGetHwndMouseGetPos.

SetWinDelay 不适用于此函数.

WinActive, SetTitleMatchMode, DetectHiddenWindows, Last Found Window, ProcessExist, WinActivate, WinWaitActive, WinWait, WinWaitClose, #HotIf

示例

激活记事本或另一个窗口, 这取决于 WinExist 函数找到的是哪个窗口. 注意, "ahk_" 关键字和它的标准值之间的空格可以省略; 这在使用变量时特别有用, 如第二个 WinExist 所示.

if WinExist("ahk_class Notepad") or WinExist("ahk_class" ClassName)
    WinActivate ; 使用由 WinExist 找到的窗口.

获取和报告活动窗口的唯一 ID(HWND).

MsgBox "The active window's ID is " WinExist("A")

如果计算器不存在则返回.

if not WinExist("Calculator")
    return