检查指定的窗口是否存在和当前是否激活(在最前面)。
IfWinActive [, WinTitle, WinText, ExcludeTitle,
ExcludeText]
IfWinNotActive [, WinTitle, WinText, ExcludeTitle,
ExcludeText]
UniqueID := WinActive("WinTitle",
"WinText", "ExcludeTitle", "ExcludeText")
WinTitle | 目标窗口的标题或部分标题(匹配模式由 SetTitleMatchMode 来决定)。如果省略此参数和其他 3 个参数, Last Found Window(最后找到的窗口) 将被使用。要使用一个窗口类,指定 ahk_class 确切的类名 (通过 Window Spy 显示)。要使用一个 process identifier (PID)(进程标识符),指定 ahk_pid %包含PID的变量% 。要使用一个 window group(窗口组),指定 ahk_group GroupName 。要使用一个窗口的 unique ID number(唯一标识符编号),指定 ahk_id %包含ID的变量% 。通过指定 multiple criteria(多个条件)缩小搜索范围。例如:My File.txt ahk_class Notepad |
WinText | 如果用到,此参数必须是目标窗口的一个单独文本对象的子字串(像内置的 Window Spy 工具显示的一样)。如果 DetectHiddenText 是 ON 的状态,隐藏的文本对象将被探测。 |
ExcludeTitle | 标题含有此参数值的窗口将不被考虑。注意:由于反向兼容 .aut 脚本 ,如果此参数刚好符合一个命令的名称,它会被解释为一个命令。要绕弯解决这种情况,使用 WinActive() 函数 来代替此命令。 |
ExcludeText | 文本含有此参数值的窗口将不被考虑。 |
如果省略所有参数,Last Found Window 将被使用。
如果这两个命令中任何一个确定激活的窗口是一个合格的匹配,Last Found Window 将更新为激活的窗口。换句话说,如果 IfWinActive 赋值为“真”或者 IfWinNotActive 赋值为“假”,Last Found Window 将被更新。
WinActive() 函数返回激活窗口的 Unique ID (HWND) ,如果窗口匹配指定的条件。假如不匹配,函数返回 0 。由于所有非零数字被视为“真”,在 WinTitle 是激活的时候 if WinActive("WinTitle") 语句为真。
SetWinDelay 不适用于 IfWinExist/IfWinActive 。
窗口标题和文本是区分大小写的。隐藏的窗口将不被探测,除非 DetectHiddenWindows 已被打开。
IfWinExist, SetTitleMatchMode, DetectHiddenWindows, Last Found Window, WinActivate, WinWaitActive, WinWait, WinWaitClose, #IfWinActive/Exist
IfWinActive, 无标题 - 记事本 { WinMaximize ; 最大化由上面的 IfWinActive 找到的记事本窗口。 Send, Some text.{Enter} return } if WinActive("ahk_class Notepad") or WinActive("ahk_class" . ClassName) ; "ahk_class" 后面不需要带空格。 WinClose ; 使用 last found window 。