用webbrowser做了个浏览器,要求每打开一个网页后对此网页进行有关处理,我将处理过程在WebBrowser的DocumentComplete事件中调用,发现有几个问题:
1.为什么打开新页面时才处理先前的页面?我要它处理当前页面呀,问题在哪?
2.打开象www.163.com这样的网站时,只能处理输入在ComBobox中的那一页,点这一页中的其它超链接时却在一个新窗口中用IE打开了,我的浏览器根本捕捉不到,怎么解决?

解决方案 »

  1.   

    1、不明白您的意思?
    2、在WebBrowser的NewWindow2事件中写代码,在自己程序中用新窗口打开~这是以前的程序,符合你的第二个问题。
    procedure TMyWebBrw.NewWindow2(Sender: TObject; var ppDisp: IDispatch;
      var Cancel: WordBool);
    var
        Tms:TMySheet;
    begin
        if IsAd then
        begin
            cancel:=true;
            exit;
        end;
        Tms:=TMysheet.Create(Mainfrm);//TsgbrwFm is form?
        Tms.PageControl:=Mainfrm.PageControl1;
        Tms.WebBrw:=TMyWebBrw.Create(Mainfrm);
        tms.InsertControl(Tms.WebBrw);
        tms.WebBrw.Align:=alclient;
        Tms.WebBrw.ParentWindow:=Tms.Handle;
        Tms.WebBrw.SetBounds(0,0,Tms.Width,Tms.Height);
        ppDisp:=Tms.WebBrw.DefaultDispatch;
        tms.Width:=tms.Width+1;
        tms.Caption:=title;
        if IsnewOpen  then
        begin
            Mainfrm.PageControl1.ActivePage:=tms;
        end;
    end;
      

  2.   

    第一个问题自己已解决。
    第2个问题:我不要用PageControl,也不要在注册表中设置,怎么实现?
    简单说,点网页的超连接,怎么返回其url?