2) WrapWinAPI 클래스

접근성 평가 도우미에서는 접근성 평가 프로세스를 선택하면 선택한 프로세스의 메인 창의 정보를 얻어올 것입니다. 이 과정에서 요소들의 화면 이미지를 캡쳐하는 기능을 구현하려고 하는데 평가 대상 창이 다른 창에 가려져 있을 수 있어서 포커스를 변경하는 메서드를 제공하려 합니다. 여기서 반환하는 것은 포커스를 변경하기 이전의 핸들입니다.

이번 프로젝트에서는 원하는 자동화 요소로 포커스를 변경하는 부분을 Windows API의 기능을 이용합니다. 만약 프로그램의 제공 기능을 확장한다면 키보드 이벤트나 마우스 이벤트를 발생하는 부분이 필요하지만 이번 프로젝트에서는 사용하지 않습니다.

using System;
using System.Runtime.InteropServices;
namespace 접근성_평가_도우미
{
    public static class WrapWinAPI
    {
        [DllImport("user32.dll")]
        static extern IntPtr SetFocus(IntPtr handle);
        [DllImport("user32.dll")]
        static extern IntPtr GetFocus();
        public static IntPtr ChangeFocus(IntPtr handle)
        {
            IntPtr ohandle = GetFocus();
            SetFocus(handle);
            return ohandle;
        }
    }
}

[소스 10.2] WrapWinAPI