[S/W 접근성] AutomationElement 메서드(속성 검색)
이번에는 자동화 요소 개체로 속성을 검색하는 메서드를 살펴봅시다.
public Object GetCachedPropertyValue ( AutomationProperty property);
public Object GetCachedPropertyValue ( AutomationProperty propery, bool ignore);
public Object GetCurrentPropertyValue ( AutomationProperty property);
public Object GetCurrentPropertyValue ( AutomationProperty propery, bool ignore);
public AutomationProperty[] GetSupportedProperties ( );
다음은 자동화 요소에 지원하는 속성 컬렉션을 구하고 각 속성 이름과 값을 얻어오는 루틴입니다.
aps = dae.GetSupportedProperties();
foreach (AutomationProperty ap in aps)
{
Console.Write("{0}:",Automation.PropertyName(ap));
object value=dae.GetCurrentPropertyValue(AutomationProperty.LookupById(ap.Id));
Console.WriteLine(value);
}
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; AutomationProperty[] aps=null; foreach (AutomationElement dae in dictionary.Values) { aps = dae.GetSupportedProperties(); foreach (AutomationProperty ap in aps) { Console.Write("{0}:",Automation.PropertyName(ap)); object value = dae.GetCurrentPropertyValue( AutomationProperty.LookupById(ap.Id)); Console.WriteLine(value); } } Console.ReadKey(); } } } |
[소스 3.2] 화면 좌표로 UI 요소 탐색 후 속성 얻어오기