프로그래밍 기술/소프트웨어 접근성, UI 자동화

[S/W 접근성] AutomationElement 메서드(자동화 요소 개체로 패턴 검색)

언제나휴일 2016. 4. 19. 10:41
반응형

 이번에는 자동화 요소 개체로 패턴을 검색하는 메서드를 살펴봅시다.

public Object GetCachedPattern(AutomationPattern pattern);

public Object GetCurrentPattern(AutomationPattern pattern);

public AutomationPattern[] GetSupportedPatterns();

public bool TryGetCachedPattern(AutomationPattern pattern, out Object pattern_obj);

public bool TryGetCurrentPattern(AutomationPattern pattern, out Object pattern_obj);

 

 GetXXXPattern 메서드는 입력인자로 전달받은 패턴 개체를 검색할 때 사용합니다. 다음은 InvokePattern (버튼 처럼 사용자 명령을 수신하는 자동화 요소의 패턴)인지 확인하는 로직입니다.

InvokePattern ip = null;

ip = dae.GetCurrentPattern(InvokePattern.Pattern) as InvokePattern;

if (ip != null)

{

   Console.WriteLine(dae.Current.Name);

}


Program.cs


 

using System;

using System.Windows.Automation;

using System.Windows;

using System.Collections.Generic;

 

namespace 패턴_검색

{

    class Program

    {

        static void Main(string[] args)

        {

            AutomationElement ae = AutomationElement.RootElement;

            Rect rect = ae.Current.BoundingRectangle;

            AutomationElement sae;

            Dictionary<int, AutomationElement> dictionary =

                       new Dictionary<int, AutomationElement>();           

            for (int x = 0; x < rect.Right; x = x + 20)

            {

                for (int y = 0; y < rect.Bottom; y += 20)

                {

                    sae = AutomationElement.FromPoint(new Point(x, y));

                    dictionary[sae.Current.NativeWindowHandle] = sae;

                    Console.Write(".");

                }

            }

            Console.WriteLine("요소 개수:{0}", dictionary.Count);

 

            InvokePattern ip = null;

            foreach (AutomationElement dae in dictionary.Values)

            {

                try

                {

                    ip = dae.GetCurrentPattern(InvokePattern.Pattern) as InvokePattern;

                    if (ip != null)

                    {

                        Console.WriteLine(dae.Current.Name);

                    }

                }

                catch{      }

            }

            Console.ReadKey();

        }

    }

}

[소스 3.2] 자동화 요소 개체로 InvokePattern 요소 검색


자동화 요소 개체로 InvokePattern 요소 검색


반응형