获取指定窗口的唯一 ID、进程 ID、进程名或控件列表。它还可以获取匹配指定条件的所有窗口的列表。
WinGet, OutputVar [, Cmd, WinTitle, WinText, ExcludeTitle, ExcludeText]
用来保存 Cmd 结果的变量名.
窗口标题或识别目标窗口的其他条件。请参阅 WinTitle。
如果使用此参数, 那么它必须是目标窗口中单个文本元素的子字符串 (和内置的 Window Spy 工具显示的一样). 当 DetectHiddenText 的设置为 ON 时, 那么会检测到隐藏文本元素.
标题中含有此参数值的窗口将被排除.
文本中含有此参数值的窗口将被排除.
Cmd 为要执行的操作, 留空时默认为 ID. 它可以为下列单词的其中一个:
ID: 获取窗口的唯一 ID 号 (HWND/句柄). 如果没有匹配窗口, 那么 OutputVar 被置空. 使用 WinExist() 和 WinActive() 也可以获取窗口的 ID;例如,WinExist("A")
能快速获取活动窗口 ID。要找出控件的 HWND(用于 Post/SendMessage 或 DllCall),请使用 ControlGet Hwnd 或 MouseGetPos。
IDLast: 与上面相同, 不过如果找到多个匹配窗口, 它会获取最后的/最下面的窗口 ID. 如果只有一个匹配, 那么它的效果与 ID 相同. 这种特性类似于 WinActivateBottom.
PID: 获取窗口的 进程 ID (PID).
ProcessName: 获取拥有窗口的进程名 (例如 notepad.exe). 如果没有匹配窗口, 那么 OutputVar 被置空.
ProcessPath [v1.1.01+]: 类似于 ProcessName, 但获取进程的完整路径和名称而不仅是名称.
Count: 获取匹配指定 WinTitle, WinText, ExcludeTitle 以及 ExcludeText 的窗口数 (没有则为 0). 要统计系统中所有窗口数, 请省略所有的四个标题/文本参数. 只有在打开 DetectHiddenWindows 设置时才会包括隐藏窗口.
List: 获取匹配指定的 WinTitle, WinText, ExcludeTitle 以及 ExcludeText 的所有窗口的唯一 ID 号 (要获取整个系统中所有窗口, 请省略所有的四个标题/文本参数). 每个 ID 号保存在名称以 OutputVar 开始的变量(构成伪数组)中,而 OutputVar 自己则保存了获取的项数(没有则为 0)。例如, 如果 OutputVar 为 MyArray 且找到两个匹配的窗口, 那么 MyArray1 会被设置为首个窗口的 ID, MyArray2 被设置为第二个窗口的 ID, 同时 MyArray 自身被设置为数目 2. 窗口获取的顺序是从最上面到最下面 (根据它们在桌面上的堆放顺序). 只有在打开 DetectHiddenWindows 设置时才会包括隐藏窗口. 在函数中,要创建全局而不是局部的伪数组,必须在使用此命令前声明 MyArray 为全局变量(对于假设全局函数,反之亦成)。
MinMax: 获取窗口的最小化/最大化状态. 如果不存在匹配窗口, 则 OuputVar 被置空; 否则, 它被设置为下列数字的其中一个:
-1: 窗口处于最小化状态 (使用 WinRestore 可以让它还原).
1: 窗口处于最大化状态 (使用 WinRestore 可以让它还原).
0: 窗口既不处于最小化状态也不处于最大化状态.
ControlList: 获取窗口中所有控件的控件名称. 如果没有匹配窗口或窗口中没有控件, 那么 OutputVar 被置空. 否则, 每个控件的名称由其类名紧接着序号 (ClassNN) 组成, 如同 Window Spy 显示的那样.
除最后一项外的其他项以换行符结束 (`n). 要逐个检查每个控件的名称, 请使用 解析循环, 如同下文示例部分演示的那样.
控件根据它们的 Z 顺序排列, 当窗口支持 TAB 导航时这通常和 TAB 键导航的顺序相同.
当前鼠标光标下的控件可以通过 MouseGetPos 获取.
ControlListHwnd [v1.0.43.06+]: 与上面相同, 不过它获取每个控件的 窗口句柄 (HWND) 而不是其 ClassNN.
Transparent: 获取度数表示的窗口的透明度 (请参阅 WinSet 了解如何设置透明度). 出现后面这些情况时 OutputVar 被置空: 1) 操作系统低于 Windows XP; 2) 没有匹配窗口; 3) 窗口没有设置透明度等级; 或 4) 其他情况 (由操作系统行为引起), 例如设置透明后窗口被最小化, 还原和/或重设大小. 否则, 被设置为介于 0 和 255 之间的数字, 这里 0 表示完全透明的窗口而 255 表示不透明的窗口. 例如:
MouseGetPos,,, MouseWin WinGet, Transparent, Transparent, ahk_id %MouseWin% ; 鼠标光标下的窗口透明度.
TransColor: 获取窗口的透明色 (请参阅 WinSet 了解如何设置透明色). 出现后面这些情况时 OutputVar 被置空: 1) 操作系统低于 Windows XP; 2) 没有匹配窗口; 3) 窗口没有透明色; 或 4) 其他情况 (由操作系统行为引起), 例如设置透明后窗口被最小化, 还原和/或重设大小. 否则, 被设置为六位的十六进制 RGB 颜色值, 例如 0x00CC99. 例如:
MouseGetPos,,, MouseWin WinGet, TransColor, TransColor, ahk_id %MouseWin% ; 鼠标光标下的窗口透明色.
Style 或 ExStyle: 分别获取表示窗口样式或扩展样式的 8 位十六进制数. 如果没有匹配窗口, 那么 OutputVar 被置空. 下面的例子判断窗口是否含有 WS_DISABLED 样式:
WinGet, Style, Style, My Window Title if (Style & 0x8000000) ; 0x8000000 为 WS_DISABLED. ... 窗口处于不可用状态, 执行适当的动作.
下一个例子判断窗口是否含有 WS_EX_TOPMOST 样式 (置顶):
WinGet, ExStyle, ExStyle, My Window Title if (ExStyle & 0x8) ; 0x8 为 WS_EX_TOPMOST. ... 窗口处于置顶状态, 执行适当的动作.
请参阅 样式表 了解部分样式.
窗口的 ID 号只在窗口的生存期内有效. 换句话说, 如果重启了应用程序, 其所有的窗口都会使用新的 ID 号.
由此命令获取的 ID 号是数值的 (不包含前缀 "ahk_id"), 且不论 SetFormat 的设置如何都保存为十六进制格式.
当前鼠标光标下的窗口 ID 可以通过 MouseGetPos 获取.
尽管当前 ID 号为 32 位的无符号整数, 但是在未来的版本中可能变成 64 位. 因此, 对它们进行数值运算例如加法是不可靠的, 因为这些运算需要把输入字符串解析为有符号而不是无符号的整数.
窗口标题和文本是区分大小写的. 只有在打开 DetectHiddenWindows 设置时,才能检测到隐藏窗口。
WinGetClass, Process, WinGetTitle, MouseGetPos, ControlGet, ControlFocus, GroupAdd
; Example #1: 最大化活动窗口并显示其唯一 ID: WinGet, active_id, ID, A WinMaximize, ahk_id %active_id% MsgBox, The active window's ID is "%active_id%". ; Example #2: 访问整个系统上所有窗口并显示它们的信息: WinGet, id, list,,, Program Manager Loop, %id% { this_id := id%A_Index% WinActivate, ahk_id %this_id% WinGetClass, this_class, ahk_id %this_id% WinGetTitle, this_title, ahk_id %this_id% MsgBox, 4, , Visiting All Windows`n%a_index% of %id%`nahk_id %this_id%`nahk_class %this_class%`n%this_title%`n`nContinue? IfMsgBox, NO, break } ; Example #3: 从 ControlList 中提取每个控件的名称: WinGet, ActiveControlList, ControlList, A Loop, Parse, ActiveControlList, `n { MsgBox, 4,, Control #%a_index% is "%A_LoopField%". Continue? IfMsgBox, No break } ; Example #4: 实时显示活动窗口的控件列表: #Persistent SetTimer, WatchActiveWindow, 200 return WatchActiveWindow: WinGet, ControlList, ControlList, A ToolTip, %ControlList% return