/// <summary> /// Gets a list of the child windows for this window. /// </summary> /// <param name="constraint">A <see cref="WindowsCriteriaConstraint"/> that returned windows should match.</param> /// <returns>A list of <see cref="Window"/> objects matching the criteria.</returns> public abstract IList<Window> GetChildWindows(WindowCriteriaConstraint constraint);
/// <inheritdoc /> public override IList<Window> GetChildWindows(WindowCriteriaConstraint constraint) { List<Window> childWindowList = new List<Window>(); IList<AssistiveTechnologyObject> childObjectList = this.AccessibleObject.GetChildrenByRole(AccessibleRole.AnyRole, true, true); foreach (AssistiveTechnologyObject childObject in childObjectList) { int itemIndex = childObjectList.IndexOf(childObject); Window candidateWindow = this.WindowFromAccessibleObject(itemIndex, (AtSpiObject)childObject); if (constraint(candidateWindow)) { childWindowList.Add(candidateWindow); } else { candidateWindow.Dispose(); } } return childWindowList; }
/// <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; }