반응형

UI 자동화 23

다른 프로세스 메뉴 및 버튼 제어하기 - Invoke 요소 제어기 구현 ["모두가 행복한 세상을 꿈꾸다." 소프트웨어 접근성, UI 자동화]

안녕하세요. 언제나 휴일에 언휴예요. 컴퓨터나 기기를 볼 수 없을 때도 소프트웨어를 제어할 수 있어야 접근성이 있는 것이죠. 이를 위해 프로세스에 Invoke(실행) 가능한 요소를 수집할 수 있어야겠죠. 그리고 프로그램 방식으로 해당 요소를 Invoke 시킬 수 있어야 합니다. 이번 강의에서는 제어할 수 있는 프로세스 목록을 수집합니다. 프로세스를 선택하면 선택한 프로세스에 Invoke 가능한 요소를 수집합니다. Invoke 가능한 요소를 선택하면 프로그램 방식으로 Invoke를 시킵니다. 또한 해당 프로세스에서 버튼이나 메뉴를 Invoke하는 사건도 수집하여 어떠한 버튼이나 메뉴가 동작했는지 모니터링도 수행합니다. ["모두가 행복한 세상을 꿈꾸다." 소프트웨어 접근성, UI 자동화]에서는 앞으로도 소프..

9. 접근성 평가 도구 만들기 - 19. MainForm

9.3.7 MainForm 이제 마지막으로 MainForm을 작성합시다. MainForm을 작성한 후에 오류를 하나 하나 잡아가면서 필요한 부분은 다시 살펴보시길 바랍니다. [그림 9.16] MainForm 배치1 - 프로젝트 탭 번호 컨트롤 형식 컨트롤 이름 특이 사항 7 Button btn_view_image 8 TreeView tv_hierarchy 9 ListView lv_property ch_name, ch_value 열 추가, View 속성을 Details로 지정 10 ListBox lbox_pattern [표 9.8] MainForm의 자식 컨트롤2 [그림 9.18] MainForm 메뉴

9. 접근성 평가 도구 만들기 - 18. InvokePatternForm

9.3.6 InvokePatternForm 이번에는 자동화 요소 컨트롤 패턴을 사용하는 방법을 이용하여 InvokePattern을 사용하는 InvokePatternForm을 작성합시다. 실제 접근성 평가 도구를 만든다면 다른 컨트롤 패턴들도 같은 방법으로 사용하는 것을 작성해야 하는데 비슷한 방법을 사용하므로 이 책에서는 다루지 않겠습니다. [그림 9.15] InvokePatternForm 배치

9. 접근성 도구 만들기 - 15. ProjectSelectForm

9.3.3 ProjectSelectForm ProjectSelectForm은 메인 창이 있는 프로세스 목록을 보여주어 평가 대상을 선택하는 폼입니다. 그리고 선택한 평가 대상 프로세스로 평가 프로젝트를 생성하고 요소 정보를 수집하여 초기화 과정이 완료하는 것을 비동기적으로 처리하는 부분을 구현합시다. [그림 9.12] ProcessSelectForm 배치

9. 접근성 평가 도구 만들기 -13. 접근성 평가 도우미 폼, 컨트롤 구현, EHHighlight

9. 3 접근성 평가 도우미 폼, 컨트롤 구현 이제 접근성 평가 도우미의 폼과 컨트롤을 구현합시다. 구현 순서는 프로그램 방식의 하이라이트를 보여주는 EHHighlight, 생성할 프로젝트 이름을 정하는 ProjectMakerControl, 프로세스를 선택하는 ProcessSelectForm, 프로젝트 생성 정보를 보여주는 ProjectInfoControl, 이미지 보기 Form, InvokePattern Form 순으로 작성한 후에 MainForm을 작성합시다. 실제 프로그래밍을 하는 순서는 이와 다르지만 분석하기 쉽게 하려고 순서를 이와 같이 할게요. 9.3.1 EHHighlight EHHighlight 개체는 원하는 사각 영역을 감싸는 하이라이트로 프로그램 방식의 초점을 표시하기 위함입니다. 접근성..

9. 접근성 평가 도구 만들기 - 10. AccEvalProject 클래스 구현

9.2.7 AccEvalProject 클래스 접근성 평가 프로젝트의 주요 정보를 수집하고 이를 관리하는 클래스를 정의합시다. 클래스의 이름은 AccEvalProject라고 정할게요. AccEvalProject에서는 자동화 요소를 수집하여 계층적인 형태로 보관하는 부분이 있습니다. 그리고 폼에서 특정 노드를 선택하면 해당 노드와 매핑하는 자동화 요소를 찾을 수 있어야 하는데 여기서는 자동화 요소를 구분할 수 있는 문자열과 트리 노드를 쌍으로 하는 사전을 멤버로 선언할게요. Dictionary node_dic = null; 그리고 평가 프로젝트를 종료할 때 이 사실을 통보하기 위한 이벤트와 평가 대상 창의 사각 영역이 변경되었을 때 통보하기 위한 이벤트를 선언할게요. public event EventHand..

9. 접근성 평가 도구 만들기 - 2. 사용자 정의 형식

9.1.2 사용자 정의 형식 접근성 평가 도우미에는 폼과 사용자 정의 컨트롤 외에도 접근성 평가를 위한 형식들을 정의해야 합니다. 여기서는 접근성 평가를 위한 형식 개체를 생성하고 관리하는 EvalManager 클래스를 정의합시다. 그리고 하나의 접근성 평가의 정보를 관리하는 AccEvalProject 클래스를 정의할게요. UI 자동화 요소는 EHAutoElem 형식으로 래핑하여 접근성 속성과 컨트롤 유형을 참조하기 쉽게 합시다. 그리고 평가 대상인 프로세스 정보는 EHProcess로 래핑할게요. 그리고 Win32 API를 래핑한 WrapWinAPI를 제공할 것입니다. 이 외에 UI 요소의 화면 정보를 캡쳐하고 Gray로 변환하는 일을 담당하는 ImageCapture 클래스를 제공할게요. 그리고 UI 자..

[소프트웨어 접근성] 가상 키보드 만들기 1

[소프트웨어 접근성] 가상 키보드 만들기 1 이번 장에서는 보조 기술을 만들 때 필요한 기술을 학습해 봅시다. 보조 기술은 키보드나 마우스, 모니터처럼 사용자와 상호작용하는 표준 장치를 대신하는 장치 혹은 소프트웨어를 말합니다. 보조 기술에는 소프트웨어 키보드와 돋보기, 스피치, 점자 인식기 등이 있습니다. 이와 같은 기술에서는 UI 자동화 기술을 이용하여 상태 변화나 명령을 내릴 수 있습니다. 여기에서는 UI 자동화 기술 외에도 프로그램 방식으로 키보드 이벤트나 마우스 이벤트를 발생시키는 방법 등도 다룰 것입니다. 그리고 최종적으로 [그림]처럼 간단한 가상 키보드를 만드는 실습을 할 것입니다. [그림] 가상 키보드 실행화면 가상 키보드 만들기 결과물 자신의 개발 환경에 맞게 변환하세요. 관련 게시글[소..

반응형