国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

讓彈出式廣告就地正法

2019-11-18 18:41:00
字體:
來源:轉載
供稿:網友
   每當我瀏覽網站的時候,那撲面而來的廣告窗口總是弄得我心煩意亂.我下定決心要自己編一個查殺廣告的程序.經過我的觀察,發現了廣告窗口和正常IE窗口的區別主要在于廣告窗口沒有標題欄和狀態欄(其實它們也有,如果你不明白,請繼續往下看!)
    祭出我自編的軟件-探索者(其實只不過是窗口類的顯示器,當然也能看密碼),發現正常瀏覽窗口的類名是IEFRAME和CabinetWClass,而廣告窗口的類名是CabinetWClass,聽說在Windows2000中也是IEFrame(未經證實).其實是什么都無所謂,只要在程序中查找這兩個類就可以了.
    PRocedure TForm1.Timer1Timer(Sender: TObject);
    var
      mainHD,WorkAHD:THandle;
    begin
    //  Kill  AD.
    mainHD:=FindWIndowEx(0,0,'CabinetWClass',nil);
    if Mainhd<>0 then
      begin
        WorkAHD:=FindWindowEx(Mainhd,0,'WorkerA',nil);  ////WorkerA類,具體關聯見下圖
        if WorkAHD=0 then PostMessage(Mainhd,WM_CLOSE,0,0);
      end;
   end;
   通過在Timer事件中調用FindWindowEx函數可以查找到運行窗口的句柄,具體介紹請見Delphi的Win32 API幫助.
   當我滿心歡喜的運行程序時卻發現廣告窗口一如往常的彈出,哪里出了錯?繼續祭出我的"探索者",先把IE瀏覽器的框架結構搞清楚,功夫不負有心人,經過一下午的時間,終于讓我找到了:

   調試,卻發現原來廣告窗口同樣具有上圖的結構,這也讓我的程序設計進程停滯不前,經過兩個晚上的思考,我終于想到另一個API函數:GetWindowRect,它可以得到一個窗口的物理尺寸結構.馬上調試,終于發現:
   1.廣告窗口的WorkerA類和Shell DocObject View類的rect.top的值是相同的;
   2.正常IE窗口的WorkerA類和Shell DocObject View類的rect.top的值是不相同的;
   馬上更改代碼,代碼如下:
   procedure TForm1.Timer1Timer(Sender: TObject);
   var
     mainHD,WorkAHD,ViewHD:THandle;
     y_workA,y_view:integer;
     rect1,rect2:TRect;
   begin
     //  Kill  AD.
     mainHD:=FindWIndowEx(0,0,'CabinetWClass',nil);
     if Mainhd<>0 then
     begin
        WorkAHD:=FindWindowEx(Mainhd,0,'WorkerA',nil);
        GetwindowRect(WorkAHD,rect1);
        y_workA:=rect1.top;
        ViewHD:=FindWindowEx(mainHD,0,'Shell DocObject View',nil);
        if viewHD<>0 then    ////注1:
        begin
          GetwindowRect(ViewHD,rect2);
          y_view:=rect2.top;
          if y_View-y_WorkA<5 then PostMessage(Mainhd,WM_CLOSE,0,0);
        end; 
     end;
   end;


上一篇:如何在程序中實現XP模式

下一篇:三談多態——善用virtual

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

主站蜘蛛池模板: 夹江县| 海口市| 广丰县| 巧家县| 丹凤县| 杂多县| 襄垣县| 桂阳县| 浙江省| 三亚市| 嘉善县| 图木舒克市| 江北区| 道孚县| 罗田县| 资源县| 巴青县| 德保县| 鄱阳县| 太白县| 广昌县| 西城区| 洛浦县| 泰和县| 龙胜| 佳木斯市| 柳林县| 滨州市| 天峨县| 凯里市| 大荔县| 静安区| 岑巩县| 荣昌县| 博爱县| 将乐县| 株洲县| 原阳县| 武穴市| 将乐县| 井冈山市|