4. 자동화 트리
UI 자동화 기술에서는 보조 기술이나 UI 클라이언트 응용 프로그램에서 자동화 요소 정보를 계층화하여 탐색 편의성을 제공하고 있습니다.
UI 자동화 기술에서는 Raw 뷰, 컨트롤 뷰, 콘텐츠 뷰로 세 가지 기본 뷰를 제공합니다.
Raw 뷰는 자동화 요소 개체의 전체 트리입니다. 컨트롤 뷰는 Raw 뷰의 하위 집합으로 상호 작용하는 UI 항목들로 구성하는 뷰이고 콘텐츠 뷰는 컨트롤 뷰의 하위 집합으로 콤보 박스처럼 사용자가 선택할 수 있는 항목들로 구성하고 있는 자동화 요소로 구성합니다.
UI 자동화 기술에서는 세 가지의 자동화 트리를 사용할 수 있게 TreeWalker 클래스를 제공하고 있고 정적 필드로 RawViewWalker, ControlViewWalker, ContentViewWalker를 제공하고 있습니다.
TreeWalker tw = TreeWalker.RawViewWalker;
그리고 TreeWalker 클래스에는 자식 요소를 탐색할 수 있는 다양한 메서드를 제공하고 있어 계층 구조에서 원하는 자동화 요소를 탐색하기 쉽습니다.
AutomationElement cae = tw.GetFirstChild(ae);
while (cae != null)
{
ListAE(cae, depth + 1);
cae = tw.GetNextSibling(cae);
}
다음은 데스크 톱의 모든 하위 요소를 출력하는 예제입니다.
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) { TreeWalker tw = TreeWalker.RawViewWalker; 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); } } } |
[소스 4.1] 자동화 트리 개요
'프로그래밍 기술 > 소프트웨어 접근성, UI 자동화' 카테고리의 다른 글
[S/W 접근성] ExpandCollapsePattern (0) | 2016.04.19 |
---|---|
[S/W 접근성] DockPattern (0) | 2016.04.19 |
[S/W 접근성] 컨트롤 패턴 종류 (0) | 2016.04.19 |
[S/W 접근성] TreeWalker 메서드 (0) | 2016.04.19 |
[S/W 접근성] TreeWalker 개체 참조 (0) | 2016.04.19 |
[S/W 접근성] AutomationElement 메서드(속성 검색) (0) | 2016.04.19 |
[S/W 접근성] AutomationElement 메서드(자동화 요소 개체로 패턴 검색) (0) | 2016.04.19 |
[S/W 접근성] AutomationElement 메서드 (0) | 2016.04.19 |
[S/W 접근성] 자동화 요소 (0) | 2016.04.19 |
[S/W 접근성] 포커스 트래커 만들기 (0) | 2016.04.19 |