# SetTitleMatchMode

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

    SetTitleMatchMode, MatchMode
    SetTitleMatchMode, Speed

## 参数

MatchMode

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

  - 1 = 窗口标题必须以指定的 WinTitle 开头才能匹配.
  - 2 = 窗口标题的任意位置包含 WinTitle 才能匹配.
  - 3 = 窗口标题必须和 WinTitle 完全一致才能匹配.
  - RegEx [v1.0.45+] = WinTitle, WinText, ExcludeTitle 以及 ExcludeText 支持正则表达式. 这些正则表达式在与命令一起使用时, 不要把正则表达式括在引号中. 例如: `WinActivate Untitled.*Notepad`.

    RegEx 还适用于 ahk_class 和 ahk_exe; 例如, `ahk_class IEFrame` 会搜索类名包含 IEFrame 的所有窗口(这是由于在默认情况下, 正则表达式在目标字符串 任意位置 查找匹配).

    对于 WinTitle, 每个项目都是分开的. 例如, 在 `i)^untitled ahk_class i)^notepad$ ahk_pid %mypid%`, `i)^untitled` 和 `i)^notepad$` 都是独立的正则表达式, 且 `%mypid%` 总是比较数值(它并不是一个正则表达式).

    对于 WinText, 每个文本元素(比如: 每个控件的文本) 都是独立匹配正则表达式的. 因此, 它不可能有跨越多个文本元素的匹配.

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

Speed

  以下单词之一来指定 WinText 和 ExcludeText 参数应如何匹配:

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

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

## 备注

此命令影响所有窗口函数和命令的行为, 例如 WinExist() 和 WinActivate. WinGetText 与其他命令一样会受到影响, 但它总是使用 Slow 方法来检索文本.

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

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

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

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

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

    SetTitleMatchMode, 2
    SetTitleMatchMode, slow

内置变量 A_TitleMatchMode 和 A_TitleMatchModeSpeed 包含了当前的设置.

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

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

## 相关

SetWinDelay, WinExist(), WinActivate, RegExMatch()

## 示例

允许窗口函数和命令去操作在任何地方包含 WinTitle 而不是开头处的窗口.

    SetTitleMatchMode 2

允许窗口函数和命令检测更多的控件类型, 但性能较低. 注意, Slow/Fast 可以独立于所有其他模式进行设置.

    SetTitleMatchMode Slow

dftg