Hook 對我來說是一個全新的東西,它的概念有點像以前在寫 DOS TSR (常駐程式) 的作法,必須攔截原本的中斷,然後改成呼叫自己的中斷服務常式,但自己的服務常式中又必須呼叫原本的中斷,以達到插入自己程式碼到系統中目的。 我實作的是 WH_CBT 的 Hook,當一個視窗有動作時 (包含 activating, creating, destroying, minimizing, maximizing, moving, or sizing) 都會呼叫這個 Hook,根據 MSDN 的說明,把 CBTProc 放在 DLL 中可以達到 Global Hook 的目的。 但奇怪的是,在偵錯的過程中,我把中斷點設在 CBTProc,只有點到我自己的程式時才有反應,點到其它的程式完全沒反應,不是 Global Hook 嗎?為甚麼點別的程式會攔截不到呢?