Show / Hide Table of Contents

Method wnd.IsMatch(+ 1 overload)


Overload

Compares window name and other properties like wnd.find does.

public bool IsMatch(string name = null, string cn = null, WOwner of = default, WFlags flags = 0, Func<wnd, bool> also = null, WContains contains = default)
Parameters
name  (string)

Window name. Usually it is the title bar text. String format: wildcard expression. null means "can be any". "" means "no name".

cn  (string)

Window class name. String format: wildcard expression. null means "can be any". Cannot be "".

of  (WOwner)

Owner window, program or thread. Depends on argument type:

  • wnd - owner window. Will use wnd.IsOwnedBy with level 2.
  • string - program file name, like "notepad.exe". String format: wildcard expression. Cannot be "" or path.
  • WOwner - WOwner.Process(process id), WOwner.Thread(thread id).

See wnd.getwnd.Owner, wnd.ProcessId, process.thisProcessId, wnd.ThreadId, process.thisThreadId.

flags  (WFlags)
also  (Func<wnd, bool>)

Callback function. Called for each matching window. It can evaluate more properties of the window and return true when they match. Example: also: t => !t.IsPopupWindow. Called after evaluating all other parameters except contains.

contains  (WContains)

Defines an object that must be in the client area of the window:

  • UI element: elmFinder or string like "name" or "e 'role' name" or "e 'role'".
  • Child control: wndChildFinder or string like "c 'cn' name" or "c '' name" or "c 'cn'".
  • Image(s) or color(s): uiimageFinder or string "image:..." (uses a uiimageFinder with flag IFFlags.WindowDC).
  • OCR text: ocrFinder or string "ocr:..." (uses an ocrFinder with flag OcrFlags.WindowDC).
Returns
bool

true if all specified (non-null/default) properties match.

Exceptions
ArgumentException
  • cn is "". To match any, use null.
  • of is "" or 0 or contains character '\\' or '/'. To match any, use null.
  • Invalid wildcard expression ("**options " or regular expression).

Remarks

Creates new wndFinder and calls wndFinder.IsMatch. To compare single parameter, use more lightweight code. Examples: if (w.Name.Like("* Notepad")), if (w.ClassNameIs("CabinetWClass")).

See Also

wnd.Name
wnd.ClassName
wnd.ClassNameIs
wnd.ProgramName

Overload(top)

Compares window name and other properties like wnd.find does. Can be specified multiple windows.

public int IsMatch(ReadOnlySpan<wndFinder> windows)
Parameters
windows  (ReadOnlySpan<wndFinder>)
Returns
int

1-based index of the match, or 0 if none.

Examples

var w = wnd.active;
int i = w.IsMatch([new("name1", "class1"), new("name2", of: "program2")]);
print.it(i);

Cache finders to improve performance when IsMatch is called multiple times. Creating all finders each time is expensive.

class C {
	static wndFinder[] s_wf1;
	
	void F(wnd w) {
		int i = w.IsMatch(s_wf1 ??= [new("name1", "class1"), new("name2", of: "program2")]);
		print.it(i);
	}
}