经常看到有人在论坛里问,如何将网页内容保存为字符串以及根据字符串显示成网页。这里说说我的看法。
将网页内容保存为字符串很简单,只需(webbrowser1.Document as Ihtmldocument2).body.outerHtml一句就可得到网页的html源码,一个WideString型。如果考虑到要等ie下载完整个网页后再保存为string可以这样写(在窗体中放置了一个memo控件以查看该页面的html源码)。
procedure tatonreg.readdocument; var IpStream: IPersistStreamInit; MemoryStream: TMemoryStream; begin ie为twebbrowser控件或为一个twebbrowser实例 with ie do begin while (ReadyState <> READYSTATE_COMPLETE) and (not forms.Application.Terminated) do Forms.Application.ProcessMessages; if Assigned(document) then begin MemoryStream := TMemoryStream.Create; try IpStream := document as IPersistStreamInit; if not Assigned(IpStream) then showmessage('错误') else if Succeeded(IpStream.save(TStreamadapter.Create(A), TRUE)) then begin MemoryStream.Seek(0, 0); memo1.lines.LoadFromStream(A); end; except end; MemoryStream.Free; end; end; end;
程序运行后memo1.text就是该网页的源码了。 twebbrowser控件不能直接根据字符串显示成网页,必须先把string转成stream。
procedure tatonreg.loaddocument; var m:tmemorystream; begin M := TMemoryStream.Create; memo1.Lines.SaveToStream(M); M.seek(0, 0); if not Assigned(ie.document) then begin ie.navigate('about:blank'); while ie.readystate <> READYSTATE_COMPLETE do Forms.Application.ProcessMessages; end; (ie.Document as IPersistStreamInit).Load(TStreamadapter.Create(M)); end;
我做了一个这类的软件,可到我的个人主页上下载http://aton.126.com 这段时间我对ie编程产生了浓厚的兴趣。大有不精通这类编程誓不罢休之势。欢迎感兴趣着与我共同探讨。

|