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運行之后就是下面結果了.如圖:

