.NET/소프트웨어 접근성, UI 자동화

[S/W 접근성] TreeWalker로 윈도우 패턴과 Enable 조건 요소 검색

언제나휴일 2016. 4. 19. 11:12
반응형

TreeWalker로 윈도우 패턴과 Enable 조건 요소 검색


응용 프로그램 설명

TreeWalker를 이용하여 윈도우 패턴과 Enable 상태를 만족하는 자동화 요소만 조사하여 콘솔 화면에 출력


응용 프로그램 유형

C# 콘솔 응용 프로그램


요구 조건

UI 자동화 .NET 어셈블리 참조(솔루션 탐색기에서 프로젝트 참조 노드에 마우스 오른쪽 버튼 클릭하여 컨텍스트 메뉴의 참조 추가 선택)

UI 자동화 기술 .NET 어셈블리 참조

Program.cs


using System;

using System.Windows.Automation;

using System.Runtime.InteropServices;

 

namespace 자동화_트리_개체_생성

{

    static class WrapApi

    {

        [DllImport("user32")]

        internal static extern IntPtr GetDesktopWindow();

    }

 

    class Program

    {

        static void Main(string[] args)

        {

            AutomationElement ae = AutomationElement.FromHandle(

                WrapApi.GetDesktopWindow());

            ListAE(ae, 0);

        }

 

        private static void ListAE(AutomationElement ae, int depth)

        {           

            Condition cond1 = new PropertyCondition(AutomationElement.IsWindowPatternAvailableProperty, true);

            Condition cond2 = new PropertyCondition(AutomationElement.IsEnabledProperty, true);

            Condition condition = new AndCondition(cond1, cond2);

            TreeWalker tw = new TreeWalker(condition);

            

            if (ae == null)

            {

                return;

            }

 

            ViewAE(ae, depth);

            AutomationElement cae = tw.GetFirstChild(ae);

 

            while (cae != null)

            {

                ListAE(cae, depth + 1);

                cae = tw.GetNextSibling(cae);

            }

        }

 

        private static void ViewAE(AutomationElement ae, int depth)

        {

            Console.WriteLine("{0}:{1}", ae.Current.Name, depth);

        }

    }

}

반응형