WebBrowser读某网站的Html代码到是简单,但是用Html代码转换成网页就困难多了.找了很多办法都不好用.最后还是自己动手编写了一个.
[添加组件]
1.添加 Standard->Memo //存放Html代码
2.添加 Internet->WebBrowser //显示网页
3.添加 Standard->Button //按钮
4.添加 Additional->ApplicationEvents //消息管理
[添加Html代码]
Memo1.Lines->TString添加代码
由于没有什么好例子,我就直接用的博客园的关于网页的Html源码.
源码如下:
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>代码改变世界 Coding Changes the World - 关于博客园 About CNBlogs</title> 5 <meta charset="utf-8"/> 6 <meta name="keywords" content="博客园简介,开发者,程序员,代码改变世界,开发者社区,coding"/> 7 <link href="http://common.cnblogs.com/css/reset.css" rel="Stylesheet" type="text/css" /> 8 <link href="http://www.cnblogs.com/css/about.css" rel="Stylesheet" type="text/css" /> 9 <script src="http://common.cnblogs.com/script/jquery.js"></script> 10 <script src="http://www.cnblogos/script/about.js"></script> 11 </head> 12 <body> 13 <div id="top_nav"><div id="top_nav_left">«<a href="http://www.cnblogs.com" title="返回网站首页">首页</a><a href="http://q.cnblogs.com">博问</a><a href="http://news.cnblogs.com">新闻</a><a href="http://home.cnblogs.com/ing/">闪存</a><a href="http://kb.cnblogs.com/">知识库</a></div><div id="top_nav_right"></div></div> 14 <div> 15 <div id="main"> 16 <div id="logo"> 17 <a href="http://www.cnblogs.com/"><img src="/images/logo.gif" alt="博客园 logo" style="border:0px"/></a> 18 </div> 19 <div id="aboutus"> 20 <img src="/images/about/about_cnbogs.gif" alt="关于博客园"/> 21 </div> 22 <div id="side_left"> 23 <ul id="nav_block"> 24 <li><a href="/about/intro.aspx" class="current">网站简介</a></li> 25 <li><a href="/about/contactus.aspx">联系方式</a></li> 26 <li><a href="/about/ad.aspx">广告服务</a></li> 27 <li><a href="/about/job.aspx">人才服务</a></li> 28 </ul> 29 </div> 30 <div id="side_right"> 31 32 <h1>博客园简介 - 代码改变世界 Coding Changes the World</h1> 33 <div id="content"> 34 <p> 35 博客园创立于2004年1月,是一个面向开发者的知识分享社区。自创建以来,博客园一直致力并专注于为开发者打造一个纯净的技术交流社区,推动并帮助开发者通过互联网分享知识,从而让更多开发者从中受益。博客园的使命是帮助开发者用代码改变世界。 36 </p> 37 <p> 38 Cnblogs.com was founded in 2004. It is a knowledge-sharing community for developers. Our mission is to help developers change the world by coding. 39 </p> 40 </div> 41 42 </div> 43 <div class="clear"></div> 44 </div> 45 <div id="footer"> 46 <a href="http://www.cnblogs.com/AboutUS.aspx">关于博客园</a><a href="http://www.cnblogs.com/ContactUs.aspx">联系我们</a><a href="/ad.aspx">广告服务</a><a href="/about/job.aspx">人才服务</a>© 2004-2016<a href="http://www.cnblogs.com">博客园</a> 47 </div> 48 </div> 49 </body> 50 </html>
但由于WebBrowser默认不支持u-tf8的代码格式,所以必须改为gb2312才能正常读取.
1 <meta charset="utf-8"/>
修改为:
<meta charset="gb2312"/>
[添加Uses]
在最后面添加 ActiveX
[编写代码]
1 unit Unit1; 2 3 interface 4 5 uses 6 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 7 Dialogs, AppEvnts, StdCtrls, OleCtrls, SHDocVw, ActiveX; 8 9 type 10 TForm1 = class(TForm) 11 Memo1: TMemo; 12 WebBrowser1: TWebBrowser; 13 Button1: TButton; 14 ApplicationEvents1: TApplicationEvents; 15 procedure Button1Click(Sender: TObject); 16 private 17 { Private declarations } 18 public 19 { Public declarations } 20 end; 21 22 var 23 Form1: TForm1; 24 25 implementation 26 27 {$R *.dfm} 28 29 procedure LoadStream(WebBrowser:TWebBrowser; Stream:TStream); 30 var 31 PersistStreamInit: IPersistStreamInit; 32 StreamAdapter: IStream; 33 MemoryStream: TMemoryStream; 34 begin 35 WebBrowser.Navigate('about:blank'); 36 repeat 37 Application.ProcessMessages; 38 Sleep(100); 39 until 40 WebBrowser.ReadyState=READYSTATE_COMPLETE; 41 if WebBrowser.Document.QueryInterface(IPersistStreamInit,PersistStreamInit)=S_OK then 42 begin 43 if PersistStreamInit.InitNew=S_OK then 44 begin 45 MemoryStream:=TMemoryStream.Create; 46 try 47 MemoryStream.CopyFrom(Stream,0); 48 MemoryStream.Position:=0; 49 except 50 MemoryStream.Free; 51 raise; 52 end; 53 StreamAdapter:=TStreamAdapter.Create(MemoryStream,soOwned); 54 PersistStreamInit.Load(StreamAdapter); 55 end; 56 end; 57 end; 58 59 procedure TForm1.Button1Click(Sender: TObject); 60 var 61 S: TStringStream; 62 begin 63 S:= TStringStream.Create(memo1.Text); 64 try 65 LoadStream(WebBrowser1,S); 66 finally 67 S.Free; 68 end; 69 end; 70 71 end.
F9运行之后就是下面结果了.如图: