dilphi做的浏览器,如果网页中的连接时指向_blank新窗口,请问才能让新建窗口的连接也能在自己的浏览器中打开,而不是调用默认的ie浏览器网上查了资料,但这方面的资料很少,查到了这样的资料:
//try   
  procedure   TForm1.WebBrowser1NewWindow2(Sender:   TObject;   
      var   ppDisp:   IDispatch;   var   Cancel:   WordBool);   
  begin   
      WebBrowser1.RegisterAsBrowser   :=   True;   
      ppDisp   :=   WebBrowser1.ControlInterface;   
  end;   我在程序中加上了上述代码,可当点击的连接指向_blank时,还是打开了ie浏览器,望指点

解决方案 »

  1.   

    继续等待:
    网上找了一资料,可我还没有实现这是资料
    如果是用新窗体打开,而不是用IE打开,简单一点:(From MSDN)procedure TForm1.WebBrowser1NewWindow2(Sender: TObject;var ppDisp: IDispatch; var Cancel: WordBool);varfrmWB:TForm1;beginfrmWB := TForm1.Create(Application);//注意,这里Self和Application、nil结果不同...frmWB.WebBrowser1.RegisterAsBrowser := TRUE;ppDisp := frmWB.WebBrowser1.OleObject;frmWB.Visible := TRUE;end;如果是用当前WebBrowser打开,可以这样:(为描述清楚,列出了我的整个单元)unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, OleCtrls, SHDocVw, StdCtrls;typeTForm1 = class(TForm)    Button1: TButton;    WebBrowser1: TWebBrowser;    procedure Button1Click(Sender: TObject);    procedure WebBrowser1NewWindow2(Sender: TObject; var ppDisp: IDispatch;      var Cancel: WordBool);    procedure tempWBBeforeNavigate2(Sender: TObject;      const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,      Headers: OleVariant; var Cancel: WordBool);    procedure WebBrowser1DocumentComplete(Sender: TObject;      const pDisp: IDispatch; var URL: OleVariant);private    { Private declarations }public    { Public declarations }end;varForm1: TForm1;implementation{$R *.dfm}vartempWB : TWebBrowser;procedure TForm1.Button1Click(Sender: TObject);beginSelf.WebBrowser1.Navigate('http://www.google.cn');end;procedure TForm1.WebBrowser1NewWindow2(Sender: TObject;var ppDisp: IDispatch; var Cancel: WordBool);beginif not Assigned(tempWB) then tempWB := TWebBrowser.Create(Self);tempWB.OnBeforeNavigate2 := Self.tempWBBeforeNavigate2;ppDisp := tempWB.OleObject;end;procedure TForm1.tempWBBeforeNavigate2(Sender: TObject;const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,Headers: OleVariant; var Cancel: WordBool);beginSelf.WebBrowser1.Navigate(Url);Cancel := True;end;procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;const pDisp: IDispatch; var URL: OleVariant);beginif Assigned(tempWB) then FreeAndNil(tempWB);end;end.
      

  2.   

    剛好看到,把偶自己的部分源代碼貼出來希望對你有所幫助!下面是源代碼
    http://hi.baidu.com/szba/blog/item/ef8f8c4beb9e2df883025c05.html
      

  3.   

    谢谢了,
    1楼给出的源代码是正确的,可以实现关键在于要有两个Twebbrowser 
    一个是webbrowser1 
    另一个是tempWB 
    tempwb为了不影响界面,可以设他的wdith为0,height为0.我设了visible为false没用. 
      

  4.   

    http://hi.baidu.com/szba/blog/item/ef8f8c4beb9e2df883025c05.html
    devhp 的空间确实相当的不错,看了非常舒服的感觉.