반응형

C# 프로그래밍 22

[소프트웨어 접근성] 포커스 소유 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 응용 프로그램 템플릿으로 작성할게요. 먼저 폼의 컨트롤을 배치하세요. ..

[소프트웨어 접근성] 구조 변경 감시자 만들기 실습

구조 변경 감시자 만들기 실습 이번에는 클라이어트용 UI 자동화 이벤트를 이용하여 자식 요소를 추가하거나 제거할 때의 이벤트를 구독하는 구조 변경 감시자 응용 프로그램을 만들어 봅시다. *Visual Studio 2010으로 만든 솔루션을 압축한 파일입니다. 자신의 개발 환경에 맞게 변환하세요.* [그림] 작성할 구조 변경 감시자 실행화면 구조 변경 감시자 응용에서는 프로세스 목록 새로 고침 버튼을 클릭하면 리스트 박스에 프로세스 목록을 표시합니다. 프로세스 목록 리스트 상자에서 항목을 선택하면 선택한 프로세스의 자동화 요소를 가운데 리스트 상자에 표시합니다. 그리고 선택한 프로세스의 메인 창의 자식 요소를 추가하거나 제거하는 이벤트가 발생하면 이를 마지막 리스트 상자에 표시합니다. 이를 위해 UI 자동..

[소프트웨어 접근성] UI 자동화 요소 탐색기 만들기 실습 - 메인 폼 구현

[소프트웨어 접근성] UI 자동화 요소 탐색기 만들기 실습 - 메인 폼 구현 [그림] 작성할 UI 자동화 요소 탐색기 *Visual Studio 2010으로 작성한 솔루션입니다. 자신의 개발 도구 버전에 맞게 변환하세요. * 이제 폼을 구현할 차례입니다. 먼저 프로세스 새로고침 버튼에 클릭 이벤트 핸들러를 추가합니다. private void btn_refresh_Click(object sender, EventArgs e) { 프로세스 ListBox의 항목을 지웁니다. lbox_process.Items.Clear(); 프로세스 목록을 구합니다. Process[] processes = Process.GetProcesses(); 프로세스 목록의 각 프로세스마다 다음을 반복합니다. foreach (Process..

[소프트웨어 접근성] UI 자동화 요소 탐색기 만들기 실습 - 핵심 클래스 UISearcher 구현

UI 자동화 요소 탐색기 만들기 실습 - 핵심 클래스 UISearcher 구현 [그림] 작성할 UI 자동화 요소 탐색기 이번에는 메인 폼에서 사용자의 명령을 받았을 때 실제 작업을 처리하는 클래스를 정의합시다. 클래스 이름은 UISearcher로 할게요. public class UISearcher 멤버 필드로 래핑한 자동화 요소가 있고 생성자에서 입력 받은 값으로 기억하게 합시다. UI 자동화 요소 탐색기에서는 특정 프로세스를 선택하였을 때 메인 창의 UI 자동화 요소를 기준으로 탐색할 것입니다. 이를 위해서 선택한 프로세스의 메인 창의 UI 자동화 요소를 래핑한 자동화 요소를 생성자의 입력 인자로 전달받아 멤버 필드 wae를 설정합니다. WrapAE wae; public UISearcher(WrapAE..

[소프트웨어 접근성] UI 자동화 요소 탐색기 만들기 실습- 프로세스, 자동화 요소 래퍼

UI 자동화 요소 탐색기 만들기 실습 - 프로세스, 자동화 요소 래퍼 [그림] 작성할 UI 자동화 요소 탐색기 프로세스 목록을 리스트 상자에 표시하고 선택한 프로세스 정보를 기억할 수 있게 래핑한 프로세스 클래스를 추가합시다. WrapProcesss 클래스에 관한 설명은 초점 제어기에서 다루었습니다. 참고하시기 바랍니다. [소프트웨어 접근성] 초점 제어기 만들기 실습 using System.Windows.Automation; namespace UsingTreeWalker { public class WrapAE { public AutomationElement AE { get; private set; } public string Name { get { return AE.Current.Name; } } pub..

[C#] 7.4 프로젝트 구현 - 초기화

7.4 프로젝트 구현 초기화 [그림] 초기화 - 캠퍼스와 장소 생성 시퀀스 다이어그램 [그림] 초기화 - 학생 생성 시퀀스 다이어그램 이제는 시나리오와 시퀀스 다이어그램 등을 보면서 구체적으로 구현해 보기로 합시다. 시나리오를 보시면 캠퍼스 생활은 크게 초기화 부분과 사용자에 의한 동작으로 나눌 수가 있습니다. 이에 캠퍼스 생활에는 초기화하는 Init 메서드와 사용자에 의한 동작인 Run 메서드를 추가하고 프로그램 진입점에서는 캠퍼스 생활 단일체를 참조하여 Init과 Run 메서드를 호출하기로 합시다. class CampusLife { ... 중략 ... internal void Init() { throw new System.NotImplementedException(); } internal void R..

[C#] 7.2.2 프로젝트 설계 - 시퀀스 다이어그램

7.2.2 시퀀스 다이어그램 작성 클래스 다이어그램을 작성하였으면 시나리오를 기반으로 분석된 기능별로 시퀀스 다이어그램을 작성합시다. 먼저, 초기화 과정에 대해 살펴봅시다. 초기화에서는 캠퍼스 생성과 장소들을 생성하는 것과 학생 생성이 진행하기로 되어 있습니다. 캠퍼스 생성이나 장소들을 생성하는 것은 사용자와의 상호 작용 없이 진행되기 때문에 단순히 생성자만 호출하면 됩니다. 그리고 학생 생성은 사용자에 의해 생성할 학생 수를 입력, 생성할 학생 유형을 선택, 학생의 이름을 결정하기 위해 상호 작용이 필요합니다. 또한, 생성된 학생은 Campus에 보내야겠지요. [그림32 - A] 초기화 시퀀스 다이어그램(캠퍼스와 장소 생성) [그림32 - B] 초기화 시퀀스 다이어그램(학생 생성) [그림32] 초기화 ..

반응형