100行代碼去除QQ廣告
為什么寫這個:
1,像我這么愛干凈的人,當然不能容忍和MM聊天的時候,看到一個內衣廣告在上面一閃一閃,這不引誘老納么;
2,為什么不用其它外掛?珊瑚蟲已S,再沒用過其它。現有的外掛實現了一些我不想要的功能,看IP也沒必要,聊天的都是熟人。另外,不知道它做了些什么事情;
3,打發這個無聊的周末。
怎樣實現:
1,萬能的HOOK
現在用到的是全局的SHELL HOOK,Hook的是窗口創建完成的消息;




ShellHook 的實現如下:





















在收到窗口創建后的消息時,就判斷這個窗口是不是QQ的,這里用到了 GetWindowThreadProcessId ,它返回窗口相關的進程ID


















然后枚舉它的子窗口,看它的子窗口有沒有廣告控件,有的話就給子控件發送個WM_CLOSE的消息.
























其中的兩個硬編碼是用 spy++ 分析出來的,可能因為版本的不同,會有差異。所以我不確定能不能關閉其它版本的QQ廣告。我使用的版本是QQ2008賀歲版。
--------------------------------------------------------------------------
后記:
盡管實現的技術很簡單,但還是花了我大半天的時間. 寫完之后覺得枚舉子窗口的方式太低效, 或者還有其它高效點的方式。另外還有全局鉤子,可能沒有必要。如果下午周末持續無聊,我會嘗試改進一下。
QQ的聊天對話框很簡單,不像MSN的對話框,鐵板一塊,用spy++啥都看不到.但是可以用 AccExplorer 分析.想在MSN的對話框上加點東西進去,實現起來很困難。對這方面有研究的同學不妨與我討論一下實現,一起學習、進步。
代碼的行數沒數,有效代碼估計也就百把行吧,呵呵,我承認我是標題黨。
附: 源代碼 + bin
posted on 2008-10-26 20:18 橙子 閱讀(2583) 評論(10) 編輯 收藏 引用 所屬分類: Win32