FormPoint 메서드를 이용하여 화면 좌표로 자동화 요소를 조사하는 콘솔 응용 프로그램을 만들어 봅시다.
먼저 콘솔 응용 프로젝트를 생성하고 필요한 어셈블리를 참조 추가하세요.
static void Main(string[] args) { 화면 좌표를 얻어오기 위해 Automation의 정적 속성인 RootElement를 참조하여 사각 영역을 구합니다. AutomationElement ae_root = AutomationElement.RootElement; Rect rect = ae_root.Current.BoundingRectangle; 같은 요소의 정보를 출력하지 않게 하기 위해 자동화 요소 변수를 두 개 선언합시다. AutomationElement ae,oae=null; x,y 좌표를 변경하면서 원하는 위치의 자동화 요소를 찾습니다. for (double y = 0; y < rect.Height; y++) { for (double x = 0; x < rect.Width; x++) { ae = AutomationElement.FromPoint(new Point(x,y)); 찾은 자동화 요소가 이전 자동화 요소가 아니면서 null이 아닐 때만 정보를 출력합니다. if ((ae!=oae)&&(ae != null)) { ViewAEInfo(ae,x,y); oae = ae; } } } } private static void ViewAEInfo(AutomationElement ae,double x,double y) { Console.Write("{0},{1} : 요소명:{2}",x,y, ae.Current.Name); Console.WriteLine("클래스:{0} ", ae.Current.LocalizedControlType); }
using System; using System.Windows.Automation; using System.Windows; namespace 좌표로_자동화_요소_조사하기 { class Program { static void Main(string[] args) { AutomationElement ae_root = AutomationElement.RootElement; Rect rect = ae_root.Current.BoundingRectangle; AutomationElement ae,oae=null; for (double y = 0; y < rect.Height; y++) { for (double x = 0; x < rect.Width; x++) { ae = AutomationElement.FromPoint(new Point(x,y)); if ((ae!=oae)&&(ae != null)) { ViewAEInfo(ae,x,y); oae = ae; } } } } private static void ViewAEInfo(AutomationElement ae,double x,double y) { Console.Write("{0},{1} : 요소명:{2}",x,y, ae.Current.Name); Console.WriteLine("클래스:{0} ", ae.Current.LocalizedControlType); } } }
[소스 3.3] Program.cs