TaskSwitchXP 코드

@codemaru · August 16, 2006 · 4 min read

TaskSwitchXP Start Panel style

XP 사용자라면 아마도 TaskSwitchXP라는 프로그램을 아실 겁니다.alt + tab을 강화시킨 유틸리티죠~ 전 이것을 사용하진 않는데 용량을 별로 차지 하지도 않고 괜찮다길래 다운받아서 설치해봤습니다. 음~ 괜찮은 것 같네요. 그런데 이 놈이 재미난 사실은 소스 코드까지 공개라는 점 입니다.

http://www.ntwind.com/ 에 가시면 소스 코드를 다운 받아서 보실 수 있습니다. 홈페이지를 조금 살펴보면 알 수 있지만 회사도 아니고 대학생이 취미생활로 개발한 것을 올리는 사이트 같더군요~ ^^ 하여튼 궁금하기도 하고 심심하기도 해서 소스 코드를 다운 받아서 좀 살펴봤습니다.

사실 전 alt + tab 전환에 엄청난 뭔가 비밀이 숨겨져 있는 줄 알았는데 알고 봤더니 ㅎㅎ~ RegisterHotkey더군요~ 메뉴에 보면 다른 방식으로 자판을 가로채는 메뉴가 있는데 그걸 활성화 하면 WH_KEYBOARD_LL훅을 사용하는 것 같습니다. 생각보다 간단한 방법이더군요. TaskSwitchXP가 XP이상만 지원 하기에 그동안 저는 alt + tab을 대신하는 뭔가가 있는 줄 알았습니다. 해당 사이트의 faq를 읽어보면 알겠지만 2000을 지원하지 않는 이유는 PrintWindow란 API 때문이더군요. 이 API가 XP이상에서만 지원하기 때문입니다. 아마도 이 놈만 작성해주면 2000에서 동작하게 하는데도 큰 문제는 없을 것 같네요~ 물론 해보진 않았습니다. ㅋㅋ-

코드는 다른 부분에서도 재미난 아이디어를 많이 볼 수 있습니다. 한 가지 재미난 기능은 특정 프로그램을 트레이로 최소화 시키는 기능입니다. 어떻게 구현했을까 궁금했는데 살펴보니 트레이로 내려가는 애니메이션을 보여준후 해당 윈도우를 숨기더군요. 그리고는 자신이 트레이에 아이콘을 등록합니다. 자신에게 메시지가 오면 해당 윈도우를 다시 보여주는 것이죠~

코드는 정말 그의 프로그래밍 철학을 보여주듯이 굉장히 힘들고 어렵게 작성되어 있습니다. 순수 API로 작성되어 있고, 최적화 부분에 많은 신경을 쓴 듯한 느낌이더군요. 이해되지 않는 부분은 부동 소수 연산을 인라인 어셈블리로 작성해 두었는데 그게 과연 그럴 필요가 있을까? 하는 생각이 들었습니다.

이런 프로그램의 동작 원리가 궁금하신 분들은 소스를 읽어보는 것도 많은 도움이 될 것 같습니다. 좋은 소스를 공개해준 Alexander Avdonin님께 감사의 뜻을 전하고 싶네용~ 개발자가 코드를 공개한다는 일은 정말 쉽지 않은 일이죠~

@codemaru
돌아보니 좋은 날도 있었고, 나쁜 날도 있었다. 그런 나의 모든 소소한 일상과 배움을 기록한다. 여기에 기록된 모든 내용은 한 개인의 관점이고 의견이다. 내가 속한 조직과는 1도 상관이 없다.
(C) 2001 YoungJin Shin, 0일째 운영 중