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

[S/W 접근성] 화면 좌표로 InvokePattern 검색

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


화면 좌표로 InvokePattern 검색


응용 프로그램 설정

화면 좌표로 InvokePattern(버튼이나 메뉴처럼 명령 가능한 컨트롤 요소) 요소를 검색하여 자동화 요소 속성 출력


화면 좌표로 InvokePattern 검색 실행화면



응용 프로그램 유형

C# 콘솔 응용 프로그램


요구조건

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

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


[그림] UI 자동화 기술 참조 추가

 

 

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)// && dae.Current.Name != null)

                    {

                        Console.WriteLine(dae.Current.Name);

                    }

                }

                catch

                {

                }

            }

            Console.ReadKey();

        }       

    }

}

 

 

반응형