반응형

프로그래밍 기술/소프트웨어 접근성, UI 자동화 67

9. 접근성 도구 만들기 - 8. FindAutoElemEvent 핸들러와 인자 클래스 구현

9.2.6 FindAutoElemEvent 핸들러와 인자 클래스 접근성 평가 프로젝트를 생성 과정에서 선택한 프로세스의 메인 창의 자동화 요소를 검색하는 부분이 필요합니다. 이 때 검색한 자동화 요소의 정보를 시각화하는 등의 정보가 필요한 곳에서는 자동화 요소를 검색이 이루어질 때마다 검색한 정보를 알 필요가 생깁니다. 이에 래핑한 자동화 요소를 참조할 수 있는 인자 클래스를 정의하고 이벤트를 발생한 개체와 인자를 입력 인자로하는 대리자를 정의할게요. using System; namespace 예제_9_접근성_평가_도우미{ public delegate void FindAutoElemEventHandler(object sender, FindAutoElemEventArgs e); public class Fi..

9. 접근성 평가 도구 만들기 - 7. EHAutoElem 클래스

9.2.5 EHAutoElem 클래스 자동화 요소와 해당 요소에서 지원하는 컨트롤 패턴을 참조할 수 있는 클래스입니다. 그리고 추가로 해당 요소의 화면을 캡쳐한 이미지를 멤버로 갖고 있습니다. 자동화 기술을 사용하기 위해 UIAutomationClient.dll, UIAutomationTypes.dll 어셈블리를 참조 추가합니다. 멤버 필드로 컨트롤 유형 열거형을 키로 컨트롤 패턴을 값으로 하는 사전을 생성하여 자동화 요소의 지원 컨트롤 패턴을 보관하고 필요할 때 참조하기 쉽게 제공할게요. Dictionary pt_dic = new Dictionary(); 접근성 속성을 저장하는 리스트를 두어 참조하기 쉽게 할게요. List curval = new List(); 접근성 요소의 화면 영역을 캡쳐한 비트맵 ..

9. 접근성 평가 도구 만들기 - 6. EHProcess 클래스

9.2.4 EHProcess 클래스 EHProcess 클래스는 단순히 Process 클래스를 래핑하여 기본 정보를 속성으로 다시 제공하는 클래스입니다. 평가 프로젝트를 생성하는 단계에서 프로세스 항목을 리스트 박스에 추가할 때 프로세스 이름과 메인 창의 타이틀 정보의 조합을 출력할 수 있게 하기 위해 정의한 클래스이며 이 외에 다른 역할은 수행하지 않습니다. using System;using System.Diagnostics; namespace 예제_9_접근성_평가_도우미{ public class EHProcess { public Process Process { get; private set; } public string ProcessName { get { return Process.ProcessName..

9. 접근성 평가 도구 만들기 - 5. ImageCaptuer 클래스

9.2.3 ImageCapture 클래스 화면 요소를 캡쳐하는 메서드에서는 UI 요소가 있는 사각 영역을 인자로 받아 Bitmap 이미지를 만들어 반환할게요. 자동화 요소의 사각 영역 정보는 WindowsBase.dll에 정의하고 있는 Rect 형식을 사용하고 있습니다. 접근성 평가 도우미는 Windows Form 응용 프로그램 템플릿으로 만들 것이므로 Rectangle 형식을 인자로 받는 메서드도 제공할게요. using System.Drawing;using System;namespace 예제_9_접근성_평가_도우미{ public class ImageCapture { static Point point = new Point(0, 0); public static Bitmap CaptureFormRect(Re..

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

9.2.2 WrapWinAPI 클래스 접근성 평가 도우미에서는 접근성 평가 프로세스를 선택하면 선택한 프로세스의 메인 창의 정보를 얻어올 것입니다. 이 과정에서 요소들의 화면 이미지를 캡쳐하는 기능을 구현하려고 하는데 평가 대상 창이 다른 창에 가려져 있을 수 있어서 초점을 변경하는 메서드를 제공하려 합니다. 여기서 반환하는 것은 초점을 변경하기 이전의 핸들입니다. 접근성 평가 도우미를 확장해서 구현하면 8장에서 래핑했던 Win32 API를 제공할 필요도 생길 수 있습니다. 여기에서는 Win32 API를 래핑하는 가장 간단한 방법을 이해하는 수준만 사용하였습니다. using System;using System.Runtime.InteropServices; namespace 예제_9_접근성_평가_도우미{ p..

9. 접근성 평가 도구 만들기 - 3. 속성과 컨트롤 패턴 열거형 정의하기

9. 2 접근성 평가 도우미 사용자 정의 형식 구현 접근성 평가 도우미를 구현하는 것은 사용자 정의 형식 구현을 먼저 설명한 이후에 사용자 정의 컨트롤, 폼 순으로 설명할게요. 여러분께서 순차적으로 구현하는 것은 폼부터 설명하는 것이 맞겠지만 분석하는 것은 내부부터 구현하는 것이 나을 것이라 생각합니다. 9.2.1 속성과 컨트롤 패턴 열거형 정의하기 접근성 요소의 기본 속성과 컨트롤 패턴은 다음처럼 열거형을 정의합시다. namespace 예제_9_접근성_평가_도우미{ public enum ENUM_UIProperty { NO_UIPROPERY=-1, EVALUATEVALUE, ACCELERATORKEY, ACCESSKEY, AUTOMATIONID, BOUNDINGRECTANGLE,CLASSNAME,CON..

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

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

9. 접근성 평가 도구 만들기 - 1. 소개

9. 평가 도구 만들기 이번 장에서는 UI 자동화 기술을 이용하여 소프트웨어 접근성 평가할 때 응용 프로그램의 창의 UI 정보를 수집하여 편의성을 제공하는 도구를 만들어 봅시다. 여기서 만들 응용 프로그램의 이름은 접근성 평가 도우미라고 하겠습니다. 9. 1 접근성 평가 도우미 구조 접근성 평가 도우미의 화면 구성은 평가 프로젝트를 생성하고 평가 대상의 계층 구조와 요약 정보를 보여주는 MainForm과 평가 프로젝트 생성 과정에서 프로세스를 선택하는 폼, 실행 가능한 요소 항목을 보여주고 프로그램 방식으로 Invoke를 수행하게 하는 폼, 평가 대상을 이미지로 보여주는 폼, 특정 UI 요소의 사각 영역에 프로그램 방식의 하이라이트를 만들어주는 폼으로 구성할게요. [그림 9.1] 평가 도우미 폼 클래스 ..

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

[소프트웨어 접근성] 가상 키보드 만들기 8 - 가상 키보드 만들기 윈도우즈 폼 응용 프로젝트를 추가한 후에 키보드 이벤트와 마우스 이벤트 처리를 위한 WrapNative 클래스를 추가하세요. 이 부분은 앞에서 설명한 부분이라 별도의 설명은 생략할게요. 아래의 소스 코드를 참고하세요.

[소프트웨어 접근성] 가상 키보드 만들기 7 - 가상 키보드 타겟 데모

[소프트웨어 접근성] 가상 키보드 만들기 7 - 가상 키보드 타겟 데모 테스트를 위한 타겟 데모를 먼저 만들기로 합시다. 네 개의 텍스트 상자와 하나의 리스트 상자를 추가하세요. 리스트 상자의 컨트롤 이름은 lbox_message로 정할게요.[그림] 컨트롤 배치 네 개의 텍스트 상자의 KeyDown 이벤트 핸들러를 같은 이름의 핸들러로 추가하세요. 여기에서는 이벤트 핸들러 이름을 textBox_KeyDown으로 정할게요. private void textBox_KeyDown(object sender, KeyEventArgs e) { sender 를 TextBox 형식 개체로 참조 연산합니다. TextBox tbox = sender as TextBox; 이벤트 인자의 KeyData 속성으로 메시지 문자열을 ..

반응형