TreeWalker로 요소름 포함하는 윈도우 탐색
응용 프로그램 설명
TreeWalker로 윈도우 탐색하여 콘솔 화면에 출력
응용 프로그램 유형
C# 콘솔 응용 프로그램
요구 조건
UI 자동화 .NET 어셈블리 참조(솔루션 탐색기에서 프로젝트 참조 노드의 오른쪽 마우스 클릭으로 컨텍스트 메뉴의 참조 추가 선택)
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)
{
Condition cond1 = new PropertyCondition(
AutomationElement.IsWindowPatternAvailableProperty, true);
Condition cond2 = new PropertyCondition(
AutomationElement.IsEnabledProperty, true);
TreeWalker tw = new TreeWalker(new AndCondition(cond1, cond2));
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)
{
AutomationElement pae = FindWindow(ae);
string pname = "없음";
if (pae != null)
{
pname = pae.Current.Name;
}
Console.WriteLine("{0}:{1} 최상위:{2}", ae.Current.Name, depth, pname);
}
private static AutomationElement FindWindow(AutomationElement ae)
{
TreeWalker walker = TreeWalker.ControlViewWalker;
while (ae!= null)
{
if (ae.Current.ControlType == ControlType.Window)
{
break;
}
ae = walker.GetParent(ae);
}
return ae;
}
}
}
'.NET > 소프트웨어 접근성, UI 자동화' 카테고리의 다른 글
소프트웨어 접근성, UI 자동화 기술 [C# .NET] (0) | 2022.06.11 |
---|---|
[S/W 접근성] TreeWalker로 윈도우 패턴과 Enable 조건 요소 검색 (0) | 2016.04.19 |
[S/W 접근성] TreeWalker를 이용하여 데스크 톱의 자식 요소 조사 (0) | 2016.04.19 |
[S/W 접근성] 화면 좌표로 UI 요소 탐색 후 속성 타입 얻어오기 (0) | 2016.04.19 |
[S/W 접근성] 화면 좌표로 InvokePattern 검색 (0) | 2016.04.19 |