示例#1
0
 /// <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;
        }