소프트웨어 접근성은 신체적 환경적 조건에도 소프트웨어를 사용할 수 있게 하는 성질을 말합니다. 이번에는 자신이 접근하고자 하는 컴퓨터와 물리적으로 다른 위치에 있는 환경적 제약을 극복하는 원격 제어 프로그램을 만드는 작업을 해 봅시다.
이번에 만들 프로그램은 UI 자동화와 직접적인 연관은 없습니다. 여러분께서 여기에서 사용한 기술과 UI 자동화 기술을 접목하면 보다 접근성 높은 보조 도구나 평가 도구를 만들 수 있을 것입니다. 여기에서는 UI 자동화 기술을 직접 사용하는 부분은 생략하고 원격 제어 프로그램을 만드는 것까지만 소개할 것입니다.
여기에서 만드는 원격 제어 프로그램은 클라이언트와 서버를 하나로 만들기로 합시다. 화면도 전체 화면을 제어할 수 있고 선택적인 영역을 제어하는 부분이나 특정 프로세스를 제어하는 부분은 제공하지 않을 것입니다.
여러분들은 이 프로그램과 함께 자동화 기술을 매시업하여 보다 나은 보조 기술이나 평가 도구를 만들어 보세요.
먼저 윈도우즈 Forms 응용 프로젝트 템플릿을 선택하여 프로젝트를 생성하세요. 그리고 기본으로 제공하는 Form1의 이름을 솔루션 창에서 이름 바꾸기를 하여 MainForm으로 변경하세요. 솔루션 창에서 폼의 이름을 바꾸면 마법사에 의해 소스 코드의 클래스 이름도 자동으로 변환해 줍니다.
다음은 여기에서 만들 원격 제어 프로그램에 정의할 형식들입니다.
클래스 명 | 역할 |
MainForm | 원격 제어 서버 설정, 원격 제어 허용 |
RemoteClientForm | 원격 호스트 화면 시각화 폼 |
VirtualCursorForm | 가상(원격 제어) 커서 |
Controller | 원격 제어 컨트롤 |
Remote | 피 원격 제어 컨트롤 |
SetupClient | 원격 제어 요청 송신(클라이언트 소켓) |
SetupServer | 원격 제어 요청 수신(서버 소켓) |
ImageServer | 원격 호스트 화면 수신(서버 소켓) |
ImageClient | 원격 호스트 화면 송신(클라이언트 소켓) |
SendEventClient | 원격 제어 키보드, 마우스 이벤트 송신(클라이언트 소켓) |
RecvEventServer | 원격 제어 키보드, 마우스 이벤트 수신(서버 소켓) |
RecvKMEEventArgs | 원격 제어 키보드, 마우스 이벤트 수신 이벤트 아규먼트 |
RecvKMEEventHandler | 원격 제어 키보드, 마우스 이벤트 수신 이벤트 대리자 |
RecvImageEventArgs | 원격 호스트 화면 수신 이벤트 아규먼트 |
RecvImageEventHandler | 원격 호스트 화면 수신 이벤트 대리자 |
RecvRCInfoEventArgs | 원격 제어 요청 Accept 이벤트 아규먼트 |
RecvRCInfoEventHandler | 원격 제어 요청 Accept 이벤트 대리자 |
KeyFlag | 키보드 이벤트 열거형 |
MouseFlag | 마우스 이벤트 열거형 |
MsgType | 키보드, 마우스 이벤트 열거형 |
Meta | 키보드, 마우스 이벤트 관련 정보 |
[표 9.1] 원격 제어 프로그램 형식과 역할