반응형

소프트웨어 접근성 62

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

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

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 속성으로 메시지 문자열을 ..

[소프트웨어 접근성] 가상 키보드 만들기 6 -한글 라이브러리 만들기

[소프트웨어 접근성] 가상 키보드 만들기 6 -한글 라이브러리 만들기 이제 한글 문자 생성기에서 익힌 기술을 이용하여 한글 라이브러리를 만들어 봅시다. 한글 라이브러리에는 외부에서 접근해서 사용하는 Hangul 클래스와 실제 한글을 만드는 정적 클래스 KoreanCharMaker 클래스, 현재 입력하고 있는 상태(초성, 중성, 종성이 올 차례)를 나타내는 HangulState 클래스와 와 열거형 HGState로 구성합시다. 한글 클래스는 한글 키나 다른 키를 입력받는 메서드와 리셋하는 메서드를 제공합니다. 먼저 클래스 라이브러리 프로젝트 템플릿으로 EHHangulLibrary 프로젝트틀 생성하세요. 솔루션 이름은 한글 오토마타로 정할게요. [그림] 한글 라이브러리의 클래스 구성 먼저 앞에서 만들었던 한글..

[소프트웨어 접근성] 가상 키보드 만들기 5 -한글 문자 생성기

[소프트웨어 접근성] 가상 키보드 만들기 5 -한글 문자 생성기 먼저 한글 문자 생성기를 정적 클래스 KoreanCharMaker로 정의합시다. public static class KoreanCharMaker { 먼저 한글 문자가 시작하는 BASE CODE(0xAC00), 초성 시작점(0x1100), 중성 시작점(0x1161)을 상수로 선언합니다. const int BASE_CODE = 0xAC00; const int BASE_INIT = 0x1100; const int BASE_VOWEL = 0x1161; 한글과 관련있는 자판 문자를 초성, 중성, 종성과 쉬프트 키를 정적 문자열로 선언합니다. //한글 코드 값 = 초성*중성개수*종성 개수+중성 *종성개수+종성+BASE 코드(0xAC00) const i..

반응형