private IEnumerable <UiNode> Execute(UiNode child = null, int max = int.MaxValue) { if (AutoAccessibilityService.Instance == null) { return(new List <UiNode>()); } if (!AutoAccessibilityService.Instance.Windows.ToList().Any()) { return(new List <UiNode>()); } var windows = AutoAccessibilityService.Instance.Windows .Where(x => x != null) .Select(x => new UiNode(x.Root)) .Where(x => x.VisibleToUser).ToList(); var list = new List <UiNode>(); if (child != null) { //查找给定节点的子节点是否有符合要求的 foreach (var window in windows) { var items = _uiNodeSearch.Search(child, _expressionExecutors).ToList(); list.AddRange(items); if (list.Count >= max) { break; } } } else { foreach (var node in windows) { var items = _uiNodeSearch.Search(node, _expressionExecutors).ToList(); list.AddRange(items); if (list.Count >= max) { break; } } } return(list); }
private IEnumerable <UiNode> Execute(int max = int.MaxValue) { if (AutoAccessibilityService.Instance?.RootInActiveWindow == null) { return(new List <UiNode>()); } if (_baseNode == null) { _baseNode = new UiNode(AutoAccessibilityService.Instance?.RootInActiveWindow); } var list = new List <UiNode>(); foreach (var executor in _expressionExecutors) { list = _uiNodeSearch.Search(_baseNode, executor, max).ToList(); } return(list); }