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浏览器,望指点
//try
procedure TForm1.WebBrowser1NewWindow2(Sender: TObject;
var ppDisp: IDispatch; var Cancel: WordBool);
begin
WebBrowser1.RegisterAsBrowser := True;
ppDisp := WebBrowser1.ControlInterface;
end; 我在程序中加上了上述代码,可当点击的连接指向_blank时,还是打开了ie浏览器,望指点
网上找了一资料,可我还没有实现这是资料
如果是用新窗体打开,而不是用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.
http://hi.baidu.com/szba/blog/item/ef8f8c4beb9e2df883025c05.html
1楼给出的源代码是正确的,可以实现关键在于要有两个Twebbrowser
一个是webbrowser1
另一个是tempWB
tempwb为了不影响界面,可以设他的wdith为0,height为0.我设了visible为false没用.
devhp 的空间确实相当的不错,看了非常舒服的感觉.