Delphi中始终用WebBrowser打开网页

转载 2016年05月30日 16:34:27

这个问题也曾经困扰过我一段时间啊!呵呵……
给你一个解决办法,肯定能成功!
procedure TForm1.WebBrowser1NewWindow2(Sender: TObject;
  var ppDisp: IDispatch; var Cancel: WordBool);
begin
Cancel:=true;
WebBrowser1.Navigate (NewURL);
end;
其中的NewURL是你在网页中点击的链接,它的值在以下事件中取得:
procedure TForm1.WebBrowser1StatusTextChange(Sender: TObject;
  const Text: WideString);
begin
NewURL :=text;
end;
这样,当你点击网页中的连接时,就在本窗口中打开.NewURL应定义为全局变量.实现不了找我哦! 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/pucoov/archive/2006/02/04/591806.aspx

Delphi中始终用WebBrowser打开网页

Delphi 2010-01-26 13:38:17 阅读172 评论0 字号:

要在同一个WebBrowser里显示,可以这样:
再放一个小的WebBrowser2,设置它在WebBrowser1下面(设置Visible为False好象无效),
// 在WebBrowser1的OnNewWindow2事件中:
procedure TForm1.WebBrowser1NewWindow2(Sender: TObject;
var ppDisp: IDispatch; var Cancel: WordBool);
begin
ppDisp := WebBrowser2.Application; // 新的窗口先指向WebBrowser2
end;
// 在WebBrowser2的OnBeforeNavigate2事件中:
procedure TForm1.WebBrowser2BeforeNavigate2(Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant; var Cancel: WordBool);
begin
WebBrowser1.Navigate(string(URL)); // 再指回WebBrowser1
Cancel := True;
end;


可以这样,窗体中放置两个PANEL,其中PANEL1中放WebBrowser1,PANEL2中放WebBrowser2,PANEL1和PANEL2、WebBrowser1和WebBrowser2的LEFT,TOP等所有属性设为一样。PANEL2的VISIBLE设为FALSE。然后添加代码如下即可:
procedure TForm1.WebBrowser1NewWindow2(Sender: TObject;
var ppDisp: IDispatch; var Cancel: WordBool);
begin
ppDisp:=WebBrowser2.Application;
panel1.Visible:=false;
panel2.Visible:=true;
end;

procedure TForm1.WebBrowser2NewWindow2(Sender: TObject;
var ppDisp: IDispatch; var Cancel: WordBool);
begin
ppDisp:=WebBrowser1.Application;
panel2.Visible:=false;
panel1.Visible:=true


我只回答第一个问题,看你给多少分:
1 NewWindow2的在接口中定义的原形:
procedure NewWindow2(Sender: TObject; var ppDisp: IDispatch;
var Cancel: WordBool);

2 通过传递一个WebBrowser的控制借口给ppDisp可以让新网页在指定的Wb中浏览
ppDisp:=WebBrowser1.Browser.ControlInterface;

3 在刚才传递的WebBrowser的OnBeforeNavigate2事件中就可以获得将要打开的
URL了!



function SaveToStream(AStream: TStream): HRESULT;
var
IpStream: IPersistStreamInit;
begin
with browser1 do
begin
while ReadyState <> READYSTATE_COMPLETE do
Forms.Application.ProcessMessages;
if Assigned(Document) then
begin
IpStream := Document as IPersistStreamInit;
Result := IpStream.save(TStreamAdapter.Create(AStream), TRUE);
end else Result := S_FALSE;
end;
end;

function Loadfromstream(AStream:TStream):hresult;
begin
with browser1 do
begin
if not Assigned(Document) then
begin
navigate2('about:blank',0,0,0,0);
while readystate <> READYSTATE_COMPLETE do Forms.Application.ProcessMessages;
end;
AStream.seek(0, 0);
Result := (Document as IPersistStreamInit).Load(TStreamadapter.Create(AStream));
end;
end;

delphi 向webbrowser打开的网页中插入js命令

unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Di...

Delphi - WebBrowser载入自定义HTML内容并显示

use Winapi.ActiveX; //调用IPersistStreamInit类 procedure TForm1.Button2Click(Sender: TObject); ...

Delphi打开网址链接的几种方法

Delphi打开网址链接的几种方法 : 1: 用默认浏览器打开, uses shellapi procedure TForm1.Button2Click(Sender: TObject)...

Delphi打开网址链接的几种方法

Delphi打开网址链接的几种方法 : 1: 用默认浏览器打开, uses shellapi procedure TForm1.Button2Click(Sender: TObject)...

Delphi中打开网页连接的几种方法

Delphi打开网址链接的几种方法:  1:  用默认浏览器打开  uses shellapi procedure TForm1...

Webbrowser控件判断网页加载完毕的简单方法

原文:http://blog.csdn.net/CometNet/article/details/5261192 一般情况下,当ReadyState属性变成READYSTAT...
  • eldn__
  • eldn__
  • 2013年11月08日 16:25
  • 3126

Webbrowser控件判断网页加载完毕的简单方法

一般情况下,当ReadyState属性变成READYSTATE_COMPLETE时,Webbrowser控件会通过触发DocumentCompleted事件来指示网页加载完毕。但当加载的网页包含fra...
  • CometNet
  • CometNet
  • 2010年01月27日 13:04
  • 15663

Delphi WebBrowser始终在当前窗口打开新网页

procedure TForm1.WebBrowser1NewWindow2(Sender: TObject; var PpDisp: IDispatch;   var Cancel: WordBo...
  • wbryfl
  • wbryfl
  • 2013年12月02日 19:36
  • 4487

webBrowser强制在本窗口打开,禁止在新窗口打开的解决方案

有时需要用WebBrowser加载URL,来实现某些功能。而这时,我们就不希望所打开的页面中的链接,在新窗口中打开,因为这样的话,实际上是用系统默认的浏览器打开了,从而脱离了你的WebBrowser,...

Delphi WebBrowser 无法调用当前浏览器的版本

function TregedtIE.WriteAppNameToReg: Boolean; var   reg :TRegistry;   sPath,sAppName:String; be...
  • wensibo
  • wensibo
  • 2014年05月16日 13:44
  • 3478
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Delphi中始终用WebBrowser打开网页
举报原因:
原因补充:

(最多只允许输入30个字)