SetTitleMatchMode

AutoHotKey

SetTitleMatchMode

设置在类似 WinWait 命令中 WinTitle 参数的匹配模式.

SetTitleMatchMode, MatchMode
SetTitleMatchMode, Fast|Slow

参数

MatchMode

下列数字的其中一个或单词 RegEx:

1: 窗口标题必须以 WinTitle 开头才能匹配.
2: 窗口标题的某个位置必须包含 WinTitle 才能匹配
3: 窗口标题必须和 WinTitle 完全一致才能匹配.

RegEx (v1.0.45+): 改变 WinTitle, WinText, ExcludeTitle, 以及 ExcludeText 为支持 正则表达式. 在这些命令中使用时, 不要把正则表达式括在引号中. 例如: WinActivate Untitled.*Notepad.

Note:

  • RegEx 还适用于 ahk_classahk_exe; 例如, ahk_class IEFrame 会搜索类名包含 IEFrame 的所有窗口(这是由于在默认情况下,正则表达式在目标字符串任意位置查找匹配).
  • 对于 WinTitle, 每个组件都是分开的. 例如, 在 i)^untitled ahk_class i)^notepad$ ahk_pid %mypid%, i)^untitledi)^notepad$ 都是独立的正则表达式, 且 %mypid% 总是比较数值 (它并不是一个正则表达式).
  • 对于 WinText, 每个文本元素 (比如: 每个控件的文本) 都是独立匹配正则表达式的. 因此, 它不可能有跨越多个文本元素的匹配.

上面的模式还会对 ExcludeTitle 产生与 WinTitle 相同的影响. 例如, 模式 3 要求被排除的窗口的标题必须准确匹配 ExcludeTitle.

Fast|Slow

One of the following words to specify how the WinText and ExcludeText parameters should be matched:

Fast: 这是默认行为. 性能比起 Slow 有较大提升, 但某些类型窗口中的一些 WinText 可能无法被各种窗口命令检测到.

Slow: 速度慢得多, 但窗口命令会获取窗口中所有可能的文本以寻找 WinText 匹配. Window Spy 中会显示哪些部分的窗口文本 (如果有) 需要慢速模式才能匹配到.

备注

此命令影响所有窗口命令的行为, 例如 WinExistWinActivate. WinGetText is affected in the same way as other commands, but it always uses the Slow method to retrieve text.

如果未指定,则 TitleMatchMode 默认为 1 和 fast 模式.

如果使用 窗口组, 则当前标题匹配模式适用于组中的每个单独的规则.

通常, 在使用标题和 快速 模式的文本无法唯一标识目标窗口时才应该使用 慢速 模式. 这是因为当任意一个应用程序窗口正忙或 "无响应" 时慢速模式会非常慢.

AutoHotkey 自带的 Window Spy 自定义版本会在单独区域中显示 slow TitleMatchMode 文本, 这样很容易判断是否需要使用 慢速 模式.

如果您想同时改变两个属性, 请执行两次命令, 例如:

SetTitleMatchMode, 2
SetTitleMatchMode, slow

内置变量 A_TitleMatchModeA_TitleMatchModeSpeed 包含了当前的设置.

不管当前的 TitleMatchMode 如何,WinTitle, WinText,ExcludeTitleExcludeText 都是区分大小写的.唯一的例外是带 不区分大小写选项 的 RegEx 模式; 例如: i)untitled - notepad.

每个新运行的 线程 (例如 热键, 自定义菜单项定时 子程序) 都会以此命令的默认设置开始. 通过在脚本的自动执行段 (脚本的顶部) 使用此命令可以改变这个默认设置.

相关

SetWinDelay, IfWinExist, WinActivate, RegExMatch()

示例

SetTitleMatchMode 2
; 或:
SetTitleMatchMode RegEx

SetTitleMatchMode Slow  ; Slow/Fast 可以独立于其他所有模式进行设置.