8) RangeValuePattern, 9) 실습: Range 값 제어하기

8) RangeValuePattern

RangeValuePattern은 특정 범위 내에서 값을 설정할 수 있는 컨트롤의 패턴입니다.

 

System.Object
System.Windows.Automation.BasePattern
System.Windows.Automation.RangeValuePattern

네임스페이스:  System.Windows.Automation
어셈블리:  UIAutomationClient(UIAutomationClient.dll)

 

RangeValuePattern의 Current 및 Cached 속성으로 RangeValuePatternInformation 구조체를 접근할 수 있습니다. 그리고 RangeValuePatternInformation 구조체에는 범위의 최소 및 최대 값과 현재 값 등을 가져오기 할 수 있는 속성을 제공합니다.

 

속성명 설명
IsReadOnly 읽기 전용인지 여부
LargeChange 더하거나 뺄 때 사용하는 큰 변경 값
Maximum 범위의 최대 값
Minimum 범위의 최소 값
SmallChange 더하거나 뺄 때 사용하는 작은 변경 값
Value 현재 값

[표 5.9] RangeValuePatternInformation 구조체의 속성

 

그리고 RangeValuePattern 클래스에서는 SetValue 메서드를 제공하여 프로그램 방식으로 제어할 수 있습니다.

또한 RangeValuePattern 클래스에서는 식별에 사용하는 정적 멤버 필드를 제공하고 있습니다.

 

멤버명 설명
IsReadOnlyProperty IsReadOnly 속성 식별
LargeChangeProperty LargeChange 속성 식별
MaximumProperty Maximum 속성 식별
MinimumProperty Minimum 속성 식별
Pattern RangeValuePattern 식별
SmallChangeProperty SmallChange 속성 식별
ValueProperty Value 속성 식별

[표 5.10] RangeValuePattern 클래스의 정적 멤버 필드

 

9) 실습: Range 값 제어하기

RangeValuePattern 개체를 이용하여 다른 프로세스를 제어하는 프로그램을 만들어 봅시다. 여기에서는 간단하게 데모 타겟 프로그램을 만든 후에 제어하는 프로그램을 만듭시다.

[그림 5.5] 실행화면
[그림 5.5] 실행화면

먼저 데모 타겟은 단순히 메인 Form에 TrackBar 컨트롤을 배치하는 것이 끝입니다. 별도의 소스 코드를 편집하거나 설정할 필요는 없습니다.

 

이제 Range 값 제어기를 만들기 위해 Windows Forms 응용 프로그램 프로젝트를 추가한 후 자식 컨트롤을 배치하세요.

 

[그림 5.6] 컨트롤 배치
[그림 5.6] 컨트롤 배치
번호 컨트롤 타입 컨트롤 명 설명
1 Button btn_target_start 타켓 프로그램 실행 버튼
2 Label lb_msg 메시지 표시
3 Label lb_countdown 대기 시간 표시
4 TrackBar tbar_control 제어에 사용할 TrackBar
5 Timer timer1 카운트 다운에 사용

[표 5.11] Form1의 컨트롤 배치

 

멤버 필드로 데모 타겟 프로그램의 실행 파일명을 설정합니다.

데모 타겟 프로그램이 실행하여 Main 윈도우가 뜨고 난 후에 자동화 요소를 수집할 것입니다. 차후에는 자동화 이벤트를 이용하지만 여기에서는 의도적으로 10초간 대기하기로 할게요. 이를 위해 카운트 다운하기 위한 멤버 필드를 선언하고 10으로 초기화합니다.

 

타겟 프로그램의 프로세스 개체를 참조할 멤버 필드를 선언합니다.

제어할 컨트롤의 RangeValuePattern 개체를 참조할 멤버 필드를 선언합니다.

데모 타겟 프로그램 실행 버튼의 클릭 이벤트 핸들러를 추가합시다.

타이머 이벤트 핸드러를 등록합니다.

RangeValuePattern을 탐색하는 메서드를 정의합시다.

트랙바의 스크롤 이벤트 핸들러를 등록하여 Value 속성으로 RanageValuePattern 개체의 값을 설정합니다.

빌드한 후 타겟 응용 프로그램을 제어기 실행 파일과 같은 위치로 옮긴 후 테스트 하세요.

[소스 5.4] Form1.cs