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