/// <inheritdoc /> public override IList<Window> GetChildWindows(WindowCriteriaConstraint constraint) { IList<Window> childWindowList = new List<Window>(); if (this.ChildEnumerationMethod == WindowEnumerationMethod.WindowManagementApi) { MsWindowsEnumerator enumerator = new MsWindowsEnumerator(); childWindowList = enumerator.GetChildWindows(this.handle, constraint); } else { if (this.AccessibleObject != null) { IList<AssistiveTechnologyObject> accessibleChildren = this.AccessibleObject.GetChildrenByRole(AccessibleRole.AnyRole, true, true); foreach (AssistiveTechnologyObject accessibleChild in accessibleChildren) { int itemIndex = accessibleChildren.IndexOf(accessibleChild); MsWindowsWindow foundWindow = new MsWindowsWindow((MsaaObject)accessibleChild, this.handle, itemIndex); if (constraint(foundWindow)) { childWindowList.Add(foundWindow); } else { foundWindow.Dispose(); } } } } return childWindowList; }
/// <summary> /// Gets all top-level windows in the system. /// </summary> /// <returns>A list of <see cref="Window"/> objects representing the top-level windows in the system.</returns> public static IList<Window> GetAllTopLevelWindows() { MsWindowsEnumerator enumerator = new MsWindowsEnumerator(); IList<Window> allWindowList = enumerator.GetWindows(window => true); return allWindowList; }