제가 최종적으로 해야할일은 어떤 종류의 MultiMedia player ( MediaPlayer, RealAudio, WinAmp 등등 )이건 간에 현재 Play하고 있는 Media의 종료 상태를 알아내는 것입니다.
일의 가닥을 Windows 메시지 훅킹쪽으로 잡았습니다. MultiMedia역시 Message 전달 방식으로 Media를 Play할거라는 생각에서 입니다.
Windows에 SystemHook을 거는 DLL을 만들고, ProcessList를 받아내는 Class를 만드는 등등 작업을 거쳐 Player를 동작시키고 메시지 훅킹하는데는 성공했습니다. 그런데 훅킹된 메시지를 아무리 살펴봐도 일상적으로 알고 있는 MultiMedia message가 나오지 않습니다. MCIWNDM_SENDSTRING, MCIWNDM_GETLENGTH 등등을 case로 걸러봤는데 안나옵니다.
왜일까요?
이런 종류의 메시지는 Player object와 Windows system간에 직접 교환하는 걸까요? 그래서 Player object를 포함한 Window에는 메시지가 전달안되는 건가요 ?
제가 알고 있기로는 Window에 포함된 Control에 Message가 전달되려면 반드시 Window를 거쳐야 하는걸로 아는데... 아마 제가 잘 못 알고 있는것 같습니다.
제 질문은 세가지 입니다.
1. Window에 포함된 Control에 메시지가 전달될 때 반드시 Window를 통해서 메시지가 전달되는지 여부.
메시지 전달의 효율을 생각한다면 Control에 직접 메시지가 전달되는것도 나쁘지 않을것 같습니다... ^^;;
2. 어떤 종류의 MultiMedia player도 Windows system이 제공하는 기반 기능을 통해서 구성되는지 여부.
Windows system이 저수준 하드웨어 엑서스를 어용하지 않기 때문에 아마도 대부분의 MultiMedia player가 Windows system의 기반 기능을 이용하지 않을까 .. 생각됩니다.
3. 2번의 질문이 "예"라면 어떻게 그 Player object로 가는 메시지를 잡을 수 있을까요?
---------------------------------------------------------------------------------
이것 때문에 편두통에 소화불량까지 생길지경입니다.
고수님들 제발 저좀 살려주십시요.