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

[S/W 접근성] 화면 좌표로 UI 요소 탐색

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

화면 좌표로 UI 요소 탐색


응용 프로그램 설명

화면 좌표를 이용하여 UI 정보를 수집하여 자동화 속성 정보를 콘솔 화면에 출력


응용 프로그램 유형

C# 콘솔 응용 프로그램


요구조건

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




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);

 

            foreach (AutomationElement dae in dictionary.Values)

            {

                ViewAEInfo(dae);

            }

            Console.ReadKey();

        }

 

        private static void ViewAEInfo(AutomationElement ae)

        {

            Console.WriteLine("요소명:{0}", ae.Current.Name);

            Console.WriteLine("사각영역:{0}", ae.Current.BoundingRectangle);

            Console.WriteLine("클래스 이름:{0}", ae.Current.ClassName);

            Console.WriteLine("컨트롤 유형:{0}",

                          ae.Current.ControlType.ProgrammaticName);

            if (ae.Current.LabeledBy != null)

            {

                Console.WriteLine("LabledBy 이름:{0}",

                              ae.Current.LabeledBy.Current.Name);

            }

            Console.WriteLine("윈도우 창 핸들:{0}", ae.Current.NativeWindowHandle);

            Console.WriteLine("프로세스 ID:{0}", ae.Current.ProcessId);

        }

    }

}

[소스] 화면 좌표로 UI 요소 탐색

반응형