마소 7월호 "메시지훅 이용한 SPy++ 흉내 내기"와 관련된 내용입니다.
특수한 메시지
윈도우즈에서 실행되는 모든 프로그램은 분리된 메모리 공간에서 실행되지만 몇몇 특수한 메시지는 예외적으로 처리된다.
설명이 좀 이상하네용. 되지만이 왜 사용됐는지 ㅎㅎ~ 분리된 메모리 공간이기 때문에 다른 프로세스로 포인터를 전달할 수 없죠. 하지만 특수한 몇몇 메시지들은 그것이 가능하다는 의미입니다.
Win16에서 다른 프로세스에 대해 메시지를 보내는 일이 빈번하게 발생했다.
Win32에서도 다른 프로세스로 메시지는 빈번하게 보냅니다. 단지 Win16에서는 자신의 포인터를 다른 프로세스로 전달하는 메시지도 많았다는 점이죠. Win32에서는 당연히 포인터 전달하면 안되죠.
윈도우 핸들 열거 방법
여기 문맥에서 0과 FALSE가 혼용되어서 사용되었는데, 0도 FALSE라고 생각하시면 됩니다. 앞으로는 용어를 일관되게 사용하도록 노력하겠습니다.
Spy 프로그램 제작
WM_COPYDATA에서 처리되어야 하는데, 이는 훅의 일시 중지 상태와 콜백 메시지 여부를 확인한 후에 이루어진다.
클라이언트 프로그램도 WM_COPYDATA에서 메시지를 처리합니다. 단지 훅이 일시 중지이거나 콜백 메시지가 아닌 경우에는 해당 메시지를 무시한다는 의미입니다.
Reference
김상형님의 SPY++ 매뉴얼