다. UI 자동화 요소 속성

자동화 요소의 속성은 AutomationElement.AutomationInformation 구조체로 제공합니다.

네임스페이스: System.Windows.Automation

어셈블리: UIAutomationClient(UIAutomationClient.dll)

자동화 요소 속성은 자동화 요소의 Cached 속성과 Current 속성으로 접근할 수 있습니다. 자동화 평가 도구나 보조 기술을 만들 때 이를 이용하여 자동화 요소를 식별하고 세부 정보를 얻을 수 있습니다.

[그림 3.1] 포커스 트래킹 - 자동화 속성 정보
[그림 3.1] 포커스 트래킹 – 자동화 속성 정보

AutomationInformation 구조체의 각 멤버의 의미를 알아봅시다.

다음은 AutomationInformation 구조체의 속성 정보입니다.

속성명형식설명
AcceleratorKeystring액셀러레이터 키 조합 문자열
AccessKeystring선택키 문자열
AutomationIdstringUI 요소의 구분자
BoundingRectangleWindows.Rect요소를 둘러싸는 사각형 좌표
ClassNamestring클래스 이름
ControlTypeControlType컨트롤 타입
FrameworkIdstring내부 UI 프레임워크 이름
HasKeyboardFocusbool포커스 소유 여부
HelpTextstring도움말
IsContentElementbool콘텐츠 요소 여부
IsControlElementbool컨트롤 여부
IsEnablebool사용할 수 있는지 여부
IsKeyboardFocusablebool포커스를 소유할 수 있는지 여부
IsOffscreenbool화면에 비표시 여부
IsPasswordbool내용이 패스워드화(보호) 여부
IsRequiredForFormbool폼에서 채워야 하는지 여부
ItemStatusstring항목 상태
ItemTypestring항목 형식
LabeledByAutomationElement테이블 레이블
LocalizedControlTypestring지역화 컨트롤 형식
Namestring요소 이름
NativeWindowHandleint요소의 창 핸들
OrientationOrientationType컨트롤 방향
ProcessIdint프로세스 ID

[표 3.3] AutomationElementInformation 속성

AcceleratorKey 속성은 요소의 액셀러레이터 키의 조합을 문자열로 제공합니다. 많은 프로그램에서 Ctrl+O로 파일 열기 대화 상자를 띄웁니다. 액셀러레이터 키의 문자열을 갖고 있는 자동화 요소는 언제나 Invoke 가능한 클래스 형식을 갖습니다.

AccessKey 속성은 요소의 액세스 키의 조합을 문자열로 제공합니다. 일반적으로 메뉴의 기능을 수행할 때 사용하는 키입니다. 보통 액세스 키는 “파일(F)”처럼 메뉴 항목에 괄호에 표시합니다.

AutomationId 속성은 요소의 자동화 ID가 들어있는 문자열을 제공합니다. 자동화 ID는 컨테이너 내에서 형제 요소를 구분하기 위한 ID입니다. 전체에서 유일함을 보장하는 것이 아니라 컨테이너에서 형제들 사이에 고유한 ID임을 주의하세요.

BoundaryRectangle 속성은 요소를 둘러싸는 사각형의 좌표입니다. 형식은 System.Windows.Rect 이며 WindowsBase.dll 어셈블리를 참조해야 해당 형식을 사용할 수 있습니다.

ClassName 속성은 컨트롤의 클래스 이름을 제공합니다.

ControlType 속성은 컨트롤 타입을 문자열로 제공합니다.

FrameworkId 속성은 UI 프레임워크 이름(“Win32”, “WinForm” 등)을 제공합니다.

HasKeyboardFocus 속성은 키보드 초점을 갖고 있는지 여부를 제공합니다.

HelpText 속성은 도움말 텍스트를 제공합니다.

IsContentElement 속성은 콘텐츠 요소인지 여부를 제공합니다. 콘텐츠 요소는 리스트 상자처럼 사용자에게 표시하는 데이터를 포함하는 요소를 말합니다.

IsControlElement 속성은 콘트롤 요소인지 여부를 제공합니다.

IsEnabled 속성은 UI 항목을 사용할 수 있는지 여부를 제공합니다.

IsKeyboardFocusable 속성은 키보드 초점을 받을 수 있는지 여부를 제공합니다.

IsOffscreen 속성은 화면에 표시 여부를 제공합니다. 화면에 표시 상태면 false이고 표시되지 않은 상태이면 true입니다.

IsPassword 속성은 비밀 번호처럼 보호할 데이터가 있는지 여부를 제공합니다. 만약 스크린 리더기를 만들 때 이 속성이 참일 때 내용을 나래이터하는 것은 비밀 번호를 노출하는 것이 되여 위험합니다.

IsRequredForForm 속성은 값을 채워야 하는지 여부를 제공합니다.

ItemStatus 속성은 항목의 상태 정보를 제공합니다.

ItemType 속성은 항목의 형식 정보를 제공합니다.

LabledBy 속성은 텍스트 레이블 정보를 제공합니다. 예를 들면 체크 박스나 콤보 박스의 텍스트 정보입니다.

LocalizedControlType 속성은 컨트를 형식의 지역화 이름을 제공합니다. 컨트롤 형식이 button일 때 한국의 지역화 이름은 단추입니다.

Name은 UI 요소의 이름입니다. 장식을 목적이 아닌 UI 요소의 Name 필드가 없으면 접근성이 떨어집니다. 화면을 볼 수 없는 상황에서 Name 필드가 없으면 사용자는 보조 기술로 무엇을 제어해야 할 지 판단하기 힘듭니다.

NativeWindowHandle 속성은 요소의 윈도우 핸들을 제공합니다. 만약 창의 핸들이 없으면 0을 제공합니다.

Orientation 속성은 컨트롤의 방향을 제공합니다. 스크롤 바나 슬라이더에서 방향이 수직 방향인지 수평 방향인지 알려주기 위해 제공하는 것입니다.

ProcessId 속성은 프로세스 ID를 제공합니다.

자동화 요소 속성 중에 컨트롤 종류에 따라 추가적으로 알아야 하는 것들은 컨트롤 패턴에 따라 별도의 형식으로 제공하고 있습니다. 여기에서는 공통적인 자동화 요소 속성에 관해서만 다루고 컨트롤 패턴에 따라 제공하는 속성에 관한 사항은 UI 자동화 컨트롤 패턴을 다룰 때 알아보기로 합시다.