SetTitleMatchMode - Syntax & Usage | AutoHotkey

AutoHotkey

SetTitleMatchMode

Sets the matching behavior of the WinTitle parameter in commands such as WinWait.

SetTitleMatchMode, MatchMode
SetTitleMatchMode, Fast|Slow

Parameters

MatchMode

One of the following digits or the word RegEx:

1: A window's title must start with the specified WinTitle to be a match.
2: A window's title can contain WinTitle anywhere inside it to be a match.
3: A window's title must exactly match WinTitle to be a match.

RegEx [v1.0.45+]: Changes WinTitle, WinText, ExcludeTitle, and ExcludeText to accept regular expressions. Do not enclose such expressions in quotes when using them with commands. For example: WinActivate Untitled.*Notepad.

Note:

  • RegEx also applies to ahk_class and ahk_exe; for example, ahk_class IEFrame searches for any window whose class name contains IEFrame anywhere (this is because by default, regular expressions find a match anywhere in the target string).
  • For WinTitle, each component is separate. For example, in i)^untitled ahk_class i)^notepad$ ahk_pid %mypid%, i)^untitled and i)^notepad$ are separate regex patterns and %mypid% is always compared numerically (it is not a regex pattern).
  • For WinText, each text element (i.e. each control's text) is matched against the RegEx separately. Therefore, it is not possible to have a match span more than one text element.

The modes above also affect ExcludeTitle in the same way as WinTitle. For example, mode 3 requires that a window's title exactly match ExcludeTitle for that window to be excluded.

Fast|Slow

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

Fast: This is the default behavior. Performance may be substantially better than Slow, but certain types of controls are not detected. For instance, text is typically detected within Static and Button controls, but not Edit controls, unless they are owned by the script.

Slow: Can be much slower, but works with all controls which respond to the WM_GETTEXT message.

Remarks

This command affects the behavior of all windowing commands, e.g. WinExist and WinActivate. WinGetText is affected in the same way as other commands, but it always uses the Slow method to retrieve text.

If unspecified, TitleMatchMode defaults to 1 and fast.

If a window group is used, the current title match mode applies to each individual rule in the group.

Generally, the slow mode should be used only if the target window cannot be uniquely identified by its title and fast-mode text. This is because the slow mode can be extremely slow if there are any application windows that are busy or "not responding".

Window Spy has an option for Slow TitleMatchMode so that its easy to determine whether the Slow mode is needed.

If you wish to change both attributes, run the command twice as in this example:

SetTitleMatchMode, 2
SetTitleMatchMode, slow

The built-in variables A_TitleMatchMode and A_TitleMatchModeSpeed contain the current settings.

Regardless of the current TitleMatchMode, WinTitle, WinText, ExcludeTitle and ExcludeText are case sensitive. The only exception is the case-insensitive option of the RegEx mode; for example: i)untitled - notepad.

Every newly launched thread (such as a hotkey, custom menu item, or timed subroutine) starts off fresh with the default setting for this command. That default may be changed by using this command in the auto-execute section (top part of the script).

Related

SetWinDelay, IfWinExist, WinActivate, RegExMatch()

Example

SetTitleMatchMode 2
; OR:
SetTitleMatchMode RegEx

SetTitleMatchMode Slow  ; Slow/Fast can be set independently of all the other modes.