如何用delphi屏蔽网页里的google小广告

解决方案 »

  1.   

    WebBrowser中有这样一个事件NewWindow2,其中有两个参数:
    var ppDisp: IDispatch; var Cancel: WordBool
    第一个参数是变参,用于指定新窗口
    第二个参数也是变参,用于控制是否可以触发NewWindow2事件,当我们浏览一个页面的时候,如果有弹出窗口的话,我们就可以用第一个参数,把弹出的窗口,截取到另一个WebBrowser里面了。
    ppDisp:=WebBrowser_NewWin(截取弹出窗口).Application;
    也可以不截取,不让触发,Cancel:=True就可以了。
      

  2.   

    或者:
    1.SendMessage(HWND,WM_CLOSE,... )用句柄去弄,因為许多的广告页面都含有ad..的字头,可以判断,大部分有效的
    2:还有的是禁止window.open函数打开的窗口 ...
    3:判断地址,做一个filter...
    4.也可以這樣:
    procedure Tfrm_Main.ENumChildWindows(hand: HWND);
    var
    h: HWND;
    s: Array[0..255] of char;
    IsPopWindow: Bool;
    begin
    IsPopWindow:=True;
    h:=GetWindow(hand,GW_child);
    while 
      

  3.   

    還可以:每个广告的窗体类是相同的,你可以找到这些类(findwindow),然后送出一个   
      wm_quIT消息关闭它(sendmessage)。。 
      

  4.   

    他的意思应该不是想屏蔽弹出的广告窗口,而是想屏蔽镶嵌在网页里的广告其实这些广告都是一些iframe或者js元素,你得分析网页源码判断哪些是广告源码哪些不是,在浏览器页面显示之前从源码中滤去这些广告源码就达到了屏蔽广告的效果,你可以参考下FireFox的Adblock Plus插件,很好用的广告屏蔽插件
      

  5.   

    写入系统HOSTS,每隔一段时间检验一次HOSTS的md5,如果发现被改写(可能是杀毒软件修复了),再写回来