//treewalker객체로 트리완성하는 함수. 매개변수로 treewalker, automationelement가 들어있는 automationelementwrapper에 넣어준다
        private static void TraverseElement(TreeWalker walker, AutomationElementWrapper automationElementWrapper)
        {
            AutomationElement child = walker.GetFirstChild(automationElementWrapper.AE); //treewalker를 통해 해당 automationelement의 첫번째 자식을 chlld에 넣어준다

            while (child != null)                                                        //자식이 없을때까지 반복
            {
                AutomationElementWrapper caew = new AutomationElementWrapper(child);     //마찬가지로 자식도 하위 프로세스가 있으므로 add를 쉽게하기위해
                                                                                         // wrapping을 해준다
                automationElementWrapper.Add(caew);
                TraverseElement(walker, caew);                                           //자식을 다시 매개변수로 넣어 재귀로 트리를 완선시킨다.
                child = walker.GetNextSibling(child);                                    //한 자식에 대한 정보가 완료된 경우 getnextsibling이란 함수로 다음 자식에대한 정보를 child에 넣고 반복
            }
        }
Beispiel #2
0
        private static void TraverseElement(TreeWalker walker, AutomationElementWrapper automationElementWrapper)
        {
            Queue <AutomationElementWrapper> elementQueue = new Queue <AutomationElementWrapper>();

            elementQueue.Enqueue(automationElementWrapper);
            while (elementQueue.Count > 0)
            {
                AutomationElementWrapper aew   = elementQueue.Dequeue();
                AutomationElement        child = walker.GetFirstChild(aew.AE);

                while (child != null)
                {
                    AutomationElementWrapper caew = new AutomationElementWrapper(child);
                    aew.Add(caew);
                    elementQueue.Enqueue(caew);
                    child = walker.GetNextSibling(child);
                }
            }
        }