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

[S/W 접근성] 포커스 소유한 자동화 요소 속성 출력

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

 

포커스 소유한 자동화 요소 속성 출력

 

프로그램 설명

포커스(초점)이 바뀔 대마다 포커스를 소유한 UI 요소의 자동화 요소 속성을 콘솔 화면에 출력

 

프로그램 유형

C# 콘솔 응용 프로그램

 

요구 조건

UI 자동화 관련 .NET 어셈블리 참조 추가(솔루션 탐색기의 프로젝트의 참조 노드에서 오른쪽 마우스 클릭으로 컨텍스트 메뉴를 띄운 후 참조 추가)

UI 자동화 기술 참조 추가

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

 

Program.cs
다운로드

 

using System;

using System.Windows.Automation;

 

namespace 예제_3._1_자동화_요소_정보

{

    class Program

    {

        static void Main(string[] args)

        {

            AutomationFocusChangedEventHandler afceh = null;

            afceh = new AutomationFocusChangedEventHandler(FocusChangedEventHandler);

            Automation.AddAutomationFocusChangedEventHandler(afceh);

            Console.ReadLine();

            Automation.RemoveAutomationFocusChangedEventHandler(afceh);

        }

        static void FocusChangedEventHandler(object obj, AutomationFocusChangedEventArgs e)

        {

            AutomationElement ae = AutomationElement.FocusedElement;           

            ViewAEInfo(ae);

           

        }

 

        private static void ViewAEInfo(AutomationElement ae)

        {

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

            Console.WriteLine("가속화 :{0}", ae.Current.AcceleratorKey);

            Console.WriteLine("액세스 :{0}", ae.Current.AccessKey);

            Console.WriteLine("자동화 요소 ID:{0}", ae.Current.AutomationId);

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

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

            Console.WriteLine("컨트롤 유형:{0}", ae.Current.ControlType.ProgrammaticName);

            Console.WriteLine("Framework ID:{0}", ae.Current.FrameworkId);

            Console.WriteLine("포커스 소유 :{0}", ae.Current.HasKeyboardFocus);

            Console.WriteLine("도움말:{0}", ae.Current.HelpText);

            Console.WriteLine("컨텐츠 여부:{0}", ae.Current.IsContentElement);

            Console.WriteLine("컨트롤 여부:{0}", ae.Current.IsControlElement);

            Console.WriteLine("활성화 여부:{0}", ae.Current.IsEnabled);

            Console.WriteLine("포커스 소유 가능 여부:{0}", ae.Current.IsKeyboardFocusable);

            Console.WriteLine("화면 비표시 여부:{0}", ae.Current.IsOffscreen);

            Console.WriteLine("내용 보화(패스워드) 여부:{0}", ae.Current.IsPassword);

            Console.WriteLine("IsRequiredForForm:{0}", ae.Current.IsRequiredForForm);

            Console.WriteLine("아이템 상태:{0}", ae.Current.ItemStatus);

            Console.WriteLine("아이템 형식:{0}", ae.Current.ItemType);

            if (ae.Current.LabeledBy != null)

            {

                Console.WriteLine("LabledBy 이름:{0}", ae.Current.LabeledBy.Current.Name);

            }

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

            Console.WriteLine("컨트롤 방향:{0}", ae.Current.Orientation);

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

        }

    }

}

 

 

반응형