[소프트웨어 접근성] 포커스 소유 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는 앞에서 만들었던 것을 이용할게요.
private void AddProcess(Process process)
{
프로세스 중에 메인 윈도우 창이 있을 때만 리스트 목록에 추가하세요.
if (process.MainWindowHandle != IntPtr.Zero)
{
lbox_process.Items.Add(new WrapProcess(process));
}
}
프로세스 목록 리스트 상자를 더블 클릭하면 선택한 항목의 프로세스 정보를 멤버 필드에 설정할게요.
WrapProcess pro = null;
private void lbox_process_MouseDoubleClick(object sender, MouseEventArgs e)
{
if (lbox_process.SelectedIndex == -1)
{
pro = null;
return;
}
pro = lbox_process.SelectedItem as WrapProcess;
}
메인 폼이 로드할 때 포커스 변경 이벤트 발생 시 처리할 이벤트 핸들러를 등록합니다.
private void MainForm_Load(object sender, EventArgs e)
{
WrapAutoEvent.AddFocusChangedEventHandler();
WrapAutoEvent.ae_dele += new AutoElemDele(WrapAutoEvent_ae_dele);
}
void WrapAutoEvent_ae_dele(AutomationElement ae)
{
throw new NotImplementedException();
}
메인 폼이 닫힐 때 등록한 이벤트 핸들러를 해제합니다.
private void MainForm_FormClosed(object sender, FormClosedEventArgs e)
{
WrapAutoEvent.RemoveFocusChangedEventHandler();
}
UI 자동화 이벤트 핸들러를 등록하거나 해제하는 역할을 담당하는 부분은 별도의 클래스 WrapAutoEvent를 만들어 사용할게요.
using System; using System.Windows.Automation;
namespace 포커스_소유_UI_요소_정보_수집기 { public delegate void AutoElemDele(AutomationElement ae);
public class WrapAutoEvent { static AutomationFocusChangedEventHandler afc_handler = null; public static event AutoElemDele ae_dele = null;
public static void AddFocusChangedEventHandler() { if (afc_handler == null) { afc_handler = new AutomationFocusChangedEventHandler( OnFocusChange); Automation.AddAutomationFocusChangedEventHandler(afc_handler); } }
public static void RemoveFocusChangedEventHandler() { if (afc_handler != null) { Automation.RemoveAutomationFocusChangedEventHandler(afc_handler); afc_handler = null; } } static void OnFocusChange(Object obj, AutomationFocusChangedEventArgs e) { if (ae_dele != null) { ae_dele(obj as AutomationElement); } } } } |
[소스] WrapAutoEvent.cs
관련 게시글
[소프트웨어 접근성] 포커스 소유 UI 요소 정보 수집기 만들기 1
[소프트웨어 접근성] 포커스 소유 UI 요소 정보 수집기 만들기 3
[소프트웨어 접근성] 포커스 소유 UI 요소 정보 수집기 만들기 4
프로젝트 파일
예제 7.2 포커스 소유 UI 요소 정보 수집기.zip
*개발 도구 환경 버전에 맞게 변환하세요.
'프로그래밍 기술 > 소프트웨어 접근성, UI 자동화' 카테고리의 다른 글
[소프트웨어 접근성] 가상 키보드 만들기 3 - 마우스 이벤트 예광탄 (0) | 2016.05.13 |
---|---|
[소프트웨어 접근성] 가상 키보드 만들기 2 - 키보드 이벤트 예광탄 (2) | 2016.05.13 |
[소프트웨어 접근성] 가상 키보드 만들기 1 (1) | 2016.05.13 |
[소프트웨어 접근성] 포커스 소유 UI 요소 정보 수집기 만들기 4 (0) | 2016.05.12 |
[소프트웨어 접근성] 포커스 소유 UI 요소 정보 수집기 만들기 3 (0) | 2016.05.12 |
[소프트웨어 접근성] 포커스 소유 UI 요소 정보 수집기 만들기 1 (0) | 2016.05.12 |
[소프트웨어 접근성] 구조 변경 감시자 만들기 실습 (0) | 2016.05.05 |
[소프트웨어 접근성] 클라이언트 용 UI 자동화 이벤트 (0) | 2016.05.05 |
[소프트웨어 접근성] UI 자동화 이벤트와 이벤트 인자 형식 (0) | 2016.05.05 |
[소프트웨어 접근성] UI 자동화 요소 탐색기 만들기 실습 - 메인 폼 구현 (0) | 2016.05.05 |