반응형

UI 자동화 기술 17

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

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

[소프트웨어 접근성] 가상 키보드 만들기 4 -한글 오토마타 만들기 개요

[소프트웨어 접근성] 가상 키보드 만들기4-한글 오토마타 만들기 개요 가상 키보드에서는 한글을 입력할 수 있게 한글 오토마타가 필요합니다. 이번에는 한글 오토마타 라이브러리를 만들어 봅시다. 한글을 입력할 대상 컨트롤에 포커스를 유지하는 방식으로 보조기술을 만들면 키보드 이벤트로 처리할 수 있지만 한글을 입력시키기 위해 포커스를 잠시 변경하면 원하는 한글 입력을 할 수 없습니다. 예를 들어 'ㅁ', 'ㅏ' 순으로 키를 누르면 '마'로 바뀌길 원하지만 'ㅁ ㅏ'로 바뀝니다. 여기에서는 이러한 문제를 해결하기 위해 한글 오토마타를 만들어 볼게요. 완성형 한글 코드는 초성과 중성과 중성의 각 코드값을 다음의 식으로 환산합니다. 한글 코드 값 = 초성*중성개수*종성 개수+중성 *종성개수+종성+BASE 코드(0x..

[소프트웨어 접근성] 가상 키보드 만들기 2 - 키보드 이벤트 예광탄

[소프트웨어 접근성] 가상 키보드 만들기 2 - 키보드 이벤트 예광탄 이번에는 가상 키보드를 제작할 때 필요한 키보드 이벤트를 발생하는 예광탄을 만듭시다. [그림] 실행화면 및 컨트롤 배치 윈도우즈 응용 프로그램 프로젝트를 생성한 후에 컨트롤 배치를 먼저 하세요. using System; using System.Runtime.InteropServices; namespace 키보드_이벤트_예광탄 { [Flags] public enum KeyFlag{ KE_DOWN = 0, KE__EXTENDEDKEY = 1, KE_UP = 2 } public static class WrapNative { [DllImport("User32.dll")] static extern void keybd_event(byte vk, ..

[소프트웨어 접근성] 포커스 소유 UI 요소 정보 수집기 만들기 4

[소프트웨어 접근성] 포커스 소유 UI 요소 정보 수집기 만들기 4 이제 자동화 요소의 공통 속성을 리스트 뷰 항목에 추가하는 SetAEProperty 메서드를 구현해 봅시다. 여기에서는 먼저 리스트 뷰의 현재 항목을 제거합니다. 그리고 자동화 속성 이름과 값으로 리스트 뷰 항목 개체를 만들어 리스트 뷰에 추가합시다.private void SetAEProperty(AutomationElement ae){ lv_ae_info.Items.Clear(); lv_ae_info.Items.Add(MakeLVItem("AcceleratorKey", ae.Current.AcceleratorKey)); ...중략...}private ListViewItem MakeLVItem(string key, object value..

[소프트웨어 접근성] 포커스 소유 UI 요소 정보 수집기 만들기 3

[소프트웨어 접근성] 포커스 소유 UI 요소 정보 수집기 만들기 3 포커스 변경 이벤트 핸들러인 WrapAutoEvent_ae_dele 메서드를 구현해 봅시다. 여기서는 감시할 프로세스를 설정하지 않은 상태라면 바로 끝냅니다. 그리고 설정되어 있는 상태라면 포커스를 점유한 자동화 요소가 설정 프로세스의 요소인지 확인하여 작업을 수행합니다. 그런데 Windows Form 응용에서 UI 컨트롤을 제어할 수 있는 것은 소유 쓰레드만 가능하므로 크로스 쓰레드 문제를 해결해야 합니다. 만약 컨트롤이나 폼의 InvokeRequiered 속성이 참이라면 현재 쓰레드는 컨트롤이나 폼을 제어할 수 없는 다른 쓰레드입니다. 이럴 때 적적한 대리자와 대리자 수행에 필요한 인자 항목을 넣어 컨트롤이나 폼의 Invoke 메서드..

[소프트웨어 접근성] 포커스 소유 UI 요소 정보 수집기 만들기 2

[소프트웨어 접근성] 포커스 소유 UI 요소 정보 수집기 만들기 2 새로 고침 버튼을 눌렀을 때 이벤트 핸들러를 작성합시다.private void btn_refresh_Click(object sender, EventArgs e){프로세스 목록을 보여 줄 리스트 박스의 항목을 지우세요. lbox_process.Items.Clear(); 프로세스 목록을 얻어옵니다. Process[] processes = Process.GetProcesses();얻어온 프로세스 목록의 각 프로세스를 추가하세요. foreach (Process process in processes) { AddProcess(process); }} WrapProcess는 앞에서 만들었던 것을 이용할게요.[소프트웨어 접근성] UI 자동화 요소 탐색기..

[소프트웨어 접근성] 포커스 소유 UI 요소 정보 수집기 만들기 1

[소프트웨어 접근성] 포커스 소유 UI 요소 정보 수집기 만들기 1 [그림] 포커스 소유 UI 요소 정보 수집기 실행화면 이번에는 하나의 프로세스에서 포커스 변경 시 포커스를 소유한 UI 요소의 자동화 정보를 수집하여 보여주는 응용을 제작해 봅시다. [그림]처럼 새로 고침 버튼을 누르면 메인 창이 있는 프로세스 목록이 리스트에 보이고 리스트에서 특정 항목을 더블 클릭하면 해당 프로세스의 UI 요소 정보를 수집하여 나타내는 응용입니다. 해당 프로세스의 UI 요소의 정보 이름은 레이블에 표시하고 공통적인 UI 자동화 요소 속성은 리스트 뷰에 UI 자동화 패턴은 리스트 박스에 추가합시다. 여기서는 Visual C#의 Windows Form 응용 프로그램 템플릿으로 작성할게요. 먼저 폼의 컨트롤을 배치하세요. ..

[소프트웨어 접근성 동영상 강의] 포커스 추적기, 자동화 요소 속성 출력

[소프트웨어 접근성 동영상 강의] 포커스 추적기, 자동화 요소 속성 출력 강의 내용 소프트웨어 접근성을 제공하기 위한 UIAutomation 기술을 이용하여 포커스(초점)가 바뀔 때마다 포커스를 소유한 자동화 요소의 자동화 요소 속성을 출력하는 콘솔 응용 프로그램입니다.사용 언어는 C#입니다. 이 강의에서 포커스 트래킹 방법과 자동화 요소의 속성들이 어떠한 것들이 있는지 확인할 수 있습니다. 소프트웨어 접근성, UI 자동화 기술 게시판에서 학습하기언제나 휴일 동영상 강의 보러가기 (모든 동영상은 무료입니다.)*이번에 마이크를 교체하면서 다소 잡음이 섞이네요. 다음에 잡음을 없애도록 노력할게요. * 신체적 환경적 장애에 관계없이 소프트웨어를 접근할 수 있는 기술,소프트웨어 자동화 기술입니다. 그 중 MS사..

[S/W 접근성] 테이블 정보 탐색기 실습

테이블 정보 탐색기 실습 이번에는 TablePattern을 이용하여 실행하고 있는 다른 프로그램의 테이블 정보를 얻어오는 프로그램을 작성하는 실습을 진행할게요. 실습에서는 간단한 회원 정보를 관리하는 타겟 데모를 만들고 테이블 정보를 탐색하는 탐색기 프로그램을 만듭시다. [그림] 시연화면 (인덱스가 0부터 시작합니다. 그리고 행과 열이 반대로 표시하고 있습니다. 데이터가 없을 때 예외는 처리하지 않았습니다.) 먼저 데모 타겟을 Windows Forms 응용 프로그램 프로젝트로 생성하세요. 그리고 컨트롤을 배치합니다. [그림] 데모 타켓 컨트롤 배치 using System; using System.Windows.Forms; namespace 데모_타겟 { public partial class Form1 :..

[S/W 접근성] TablePattern, TableItemPattern

5.2.11 TablePattern 행과 열 형태로 자식 항목을 보관하는 컨테이너 컨트롤에서 지원하는 패턴입니다. System.Object System.Windows.Automation.BasePattern System.Windows.Automation.GridPattern System.Windows.Automation.TablePattern 네임스페이스: System.Windows.Automation 어셈블리: UIAutomationClient(UIAutomationClient.dll) TablePttern의 Current 및 Cached 속성으로 TablePatternInformation 구조체를 접근할 수 있습니다. 그리고 TablePatternInformation 구조체에는 항목이 선택 상태인지와..

반응형