1.소개

스파이는 비주얼 C++과 함께 배포되는 개발 보조툴로 주로 윈도우에 대한 정보를 조사하고자 할 때 사용된다. 윈도우의 클래스 이름이나 스타일 또는 포함 관계를 조사하거나 윈도우로 전달되는 메시지를 감시하는 것이 주된 용도이며 이 툴을 사용하면 다른 프로그램의 구성이나 동작 방식에 대해 많은 것을 배울 수 있다. 이름 그대로 이미 만들어져 있는 윈도우의 정보를  몰래 살짝 들여다 보는 도구이다. 그다지 실용적이지는 않지만 스레드나 프로세스에 대한 감시 기능도 제공한다.

스파이가 제공하는 정보는 Win32 API의 표기법을 그대로 사용하므로 이 정보를 제대로 해석하려면 Win32 API에 대한 기본적인 이해가 필요하다. 예를 들어 윈도우 스타일은 WS_CHILD나 WS_VSCROLL 등으로 표기되는데 이 상수들이 어떤 의미를 가지는가를 알고 있어야 하며 윈도우 클래스의 각 멤버에 대한 이해도 필요하다. 클래스 바이트(cbClsExtra)나 인스턴스 핸들, 윈도우 프로시저같은 용어에도 거부감이 없어야 한다. 이 강좌를 읽고 있는 사람이라면 이런 기본적인 용어에 대해서는 잘 알고 있을 것이다.

비주얼 스튜디오의 모든 버전에 포함되어 있기 때문에 별도로 설치할 필요가 없으며 각 버전별로 기능상의 차이점도 거의 없으므로 한가지 버전에 대해서만 사용법을 익혀두면 된다. 이 강좌는 비주얼 스튜디오 .Net의 Spy++로 작성되었다. 비주얼 C++ 6.0에도 스파이가 있고 더 최신의 닷넷 2003에도 포함되어 있는데 사용 방법은 비슷하다.

시작 버튼을 눌러 프로그램 메뉴를 열고 비주얼 스튜디오 폴더의 Visual Studio .Net Tools를 선택하면 이 안에 Spy++이 등록되어 있으며 이 항목을 선택하면 스파이가 실행된다. 한번만 실행되는 프로그램이므로 이미 실행중이라면 실행중인 스파이로 포커스만 넘어간다. 자주 사용한다면 단축 아이콘을 만들어 놓는 것이 좋을 것이다. 스파이는 다음과 같이 생겼다.

MDI 형태로 되어 있으므로 여러 개의 뷰를 동시에 열어 놓을 수 있으나 실제 중요한 정보는 개별적인 대화상자를 통해 확인하기 때문에 MDI의 이점은 별로 없는 셈이다. 대체로 관심있는 뷰 하나만 열고 최대화해 놓고 많이 쓰는 편이다.

비주얼 C++ 6.0까지는 영문으로 되어 있었으나 7.0부터는 스파이도 한글화되어 메뉴나 대화상자의 캡션이 한글로 바뀌었다. 그러나 개발자들은 실제로 영문으로 된 전문 용어에 익숙해져 있기 때문에 번역된 캡션이 더 어색하게 느껴지기도 한다. 번역이 그다지 매끄럽지는 않지만 번역된 캡션을 보면 어떤 대상을 가리키는지 직관적으로 알 수 있는 정도이다. 예를 들어 "창 바이트"라는 말은 윈도우의 여분 바이트(cbWndExtra)라는 뜻이고 "창 프로시저"라는 말은 윈도우 프로시저의 번지라는 뜻이다. 개인적으로 이런 전문적인 프로그램은 한글화 하지 않는 것이 더 좋다고 생각한다.

타이틀 바 아래에 메뉴가 있고 그 아래에 툴바가 있으며 작업영역 아래에는 상태란이 배치되어 있어 전체적인 모양은 지극히 평범하다. 메뉴에는 스파이의 모든 명령들이 정리되어 있겠지만 대부분의 명령들이 툴바에 있으므로 이 버튼들에 대해서만 알아 두면 스파이의 모든 기능을 다 활용할 수 있다.

메뉴에 있는 명령 중 유일하게 실용성이 있는 명령은 메인 윈도우의 글꼴을 변경할 수 있는 보기/글꼴 명령밖에 없다. 디폴트 글꼴은 9포인트의 Sans Serif인데 굴림이나 바탕으로 변경할 수 있으며 글꼴의 크기도 크게 만들 수 있다. 다음은 툴 버튼에 대한 간략한 설명이다.

 

버튼

설명

뷰를 보여준다.

프로세스 뷰를 보여준다.

스레드 뷰를 보여준다.

메시지 옵션 대화상자를 보여준다.

찾기 대화상자를 띄운다.

메시지 기록을 시작하거나 잠시 중지한다.

메시지 옵션 대화상자를 보여준다.

지금까지 조사된 메시지 기록을 삭제한다.

조건에 맞는 , 프로세스, 스레드, 메시지를 검색한다.

다음 찾기

이전 찾기

속성 대화상자를 보여준다.

새로 고침.

 

상태란은 선택된 메뉴나 툴바에 대한 간단한 도움말을 보여주는 정도의 기능밖에 없다. 겉으로 보이는 이런 것들 외에 화면 각 부분을 누르면 나타나는 팝업 메뉴가 있는데 이에 대해서는 관련 부분에서 따로 설명하기로 한다.