delphi 怎么判断webbrowser打开网页成功?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi 怎么判断webbrowser打开网页成功?相关的知识,希望对你有一定的参考价值。

在同一个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;
参考技术A unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OleCtrls, SHDocVw;

type
TForm1 = class(TForm)
WebBrowser1: TWebBrowser;
Button1: TButton;
Edit1: TEdit;
procedure FormCreate(Sender: TObject);
procedure WebBrowser1DownloadBegin(Sender: TObject);
procedure WebBrowser1DownloadComplete(Sender: TObject);
private
Private declarations
public
Public declarations
end;

var
Form1: TForm1;

implementation

$R *.dfm

procedure TForm1.FormCreate(Sender: TObject);
begin
form1.WebBrowser1.Navigate('www.ivytc.com');

end;

procedure TForm1.WebBrowser1DownloadBegin(Sender: TObject);
begin
edit1.Text :='开始';
end;

procedure TForm1.WebBrowser1DownloadComplete(Sender: TObject);
begin
edit1.Text :='完成打开';
end;

end.本回答被提问者采纳

VB中如何将WebBrowser打开的网页图片缩放显示?

我用以下命令打开了该URL地址处的一张图片,如何将其放大或者缩小呢?我想让它正好充满整个WebBrowser控件!纠结好久了,大神帮帮忙吧,小弟谢了!

WebBrowser1.Navigate "http://192.168.8.1:8083/?action=snapshot"

参考技术A 如果网页是本地就简单了,你去下载个DW,网页三剑客之一的DW,别下载错了,然后在里面设置好他的大小就可以了,VB不清楚,也有一个土办法,把网页控件拉到很大,拉到你的图片能够充满追问

我是想把摄像头看到的图像实时传输到VB中,我用WEBBROWSER控件打开URL处的图片,然后用TIMER不断去刷新,可以得到实时传输的效果,但是图片切换时会有明显的一闪一闪的效果,因为图片切换的很快,刷新间隔越短闪得就越厉害 这个应该怎么解决啊?

追答

WEBBROWSER是网页控件,不适合做这种的,因为TIMER会刷新整个界面,你看起来当然是幻灯片了

以上是关于delphi 怎么判断webbrowser打开网页成功?的主要内容,如果未能解决你的问题,请参考以下文章

delphi webbrowser,如何调整webbrowser里面打开网页的大小,或者使打开的内容适应webbrowser控件的大小。

求助:用delphi做了个简单浏览器,可以浏览网页,但一打开里面其他的连接,确是用IE打开的。

delphi中WebBrowser1打开网页

Delphi 获得Webbrowser弹出对话框的信息

delphi怎么获取网页的http返回状态及反应时间

delphi中WebBrowser控件怎么模拟点击网页框架中的按钮button?