WebBrowser 控件概述(msdn介紹)
WebBrowser 控件為 WebBrowser ActiveX 控件提供了托管包裝。托管包裝使您可以在 Windows 窗體客戶端應(yīng)用程序中顯示網(wǎng)頁。使用 WebBrowser 控件,可以復(fù)制應(yīng)用程序中的 Internet Explorer Web 瀏覽功能,還可以禁用默認(rèn)的 Internet Explorer 功能,并將該控件用作簡單的 HTML 文檔查看器。此外,可以使用該控件將基于 DHTML 的用戶界面元素添加到窗體中,還可以隱瞞這些元素在 WebBrowser 控件中承載的事實。通過這種方法,可以將 Web 控件和 Windows 窗體控件無縫地整合到一個應(yīng)用程序中。
WebBrowser 控件包含多種可以用來實現(xiàn) Internet Explorer 中的控件的屬性、方法和事件。例如,可以使用 Navigate 方法實現(xiàn)地址欄,使用 GoBack、GoForward、Stop 和 Refresh 方法實現(xiàn)工具欄中的導(dǎo)航按鈕??梢蕴幚?Navigated 事件,以便使用 Url 屬性的值更新地址欄,使用 DocumentTitle 屬性的值更新標(biāo)題欄。
如果想要在應(yīng)用程序中生成自己的頁面內(nèi)容,可以設(shè)置 DocumentText 屬性。如果熟悉 HTML 文檔對象模型 (DOM),還可以通過 Document 屬性操作當(dāng)前網(wǎng)頁的內(nèi)容。通過此屬性,您可以將文檔存儲在內(nèi)存中來修改文檔,而不用在文件間進(jìn)行導(dǎo)航。
此外,使用 Document 屬性,可以從客戶端應(yīng)用程序代碼調(diào)用網(wǎng)頁腳本代碼中實現(xiàn)的方法。若要從腳本代碼訪問客戶端應(yīng)用程序代碼,請設(shè)置 ObjectForScripting 屬性。腳本代碼可以將指定的對象作為 window.external 對象訪問。
API詳細(xì)見
http://msdn.microsoft.com/zh-cn/library/w290k23d(VS.80).aspx
主要使用了IE內(nèi)置的WebBrowser控件,無需用戶下載和安裝。WebBrowser有很多功能,這里主要講如何實現(xiàn)在線打印
1.首先引入一個WebBrowser在需要打印的頁面,可以直接添加:
<object id="WebBrowser" classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height="0" width="0">
</object>
2 .頁面設(shè)置和打印預(yù)覽
如下所示,直接調(diào)用即可
document.all.WebBrowser.ExecWB(6,6) 直接打印
document.all.WebBrowser.ExecWB(8,1) 頁面設(shè)置
document.all.WebBrowser.ExecWB(7,1) 打印預(yù)覽
常用的:
WebBrowser.ExecWB(1,1) 打開
WebBrowser.ExecWB(2,1) 關(guān)閉現(xiàn)在所有的IE窗口,并打開一個新窗口
WebBrowser.ExecWB(4,1) 保存網(wǎng)頁
WebBrowser.ExecWB(6,1) 打印
WebBrowser.ExecWB(7,1) 打印預(yù)覽
WebBrowser.ExecWB(8,1) 打印頁面設(shè)置
WebBrowser.ExecWB(10,1) 查看頁面屬性
WebBrowser.ExecWB(15,1) 撤銷
WebBrowser.ExecWB(17,1) 全選
WebBrowser.ExecWB(22,1) 刷新
WebBrowser.ExecWB(45,1) 關(guān)閉窗體無提示
或者:
execScript("document.all.WebBrowser.ExecWB 7, 1","VBScript");
3 隱藏不打印的頁面元素和分頁
CSS 有個Media 屬性,可以分開設(shè)置打印和顯示的格式。
如 <style media="print" type="text/css"> …</style> 中間的格式將只在打印時起作用,不會影響顯示界面。
所以可以設(shè)定
<style media="print" type="text/css">
.Noprint{display:none;}
.PageNext{page-break-after: always;}
</style>
然后給不想打印的頁面元素添加: class="Noprint" ,那就不會出現(xiàn)在打印和打印預(yù)覽中了。
想分頁的地方添加: <div class="PageNext"></div> 就可以了。
WebBrowser組件的execWB方法(轉(zhuǎn)載)
1. 調(diào)用方法:
WebBrowser.ExecWB nCmdID, nCmdExecOpt, [pvaIn], [pvaOut]
2. 參數(shù)說明:
(a).nCmdID
OLECMDID_OPEN = 1,
OLECMDID_NEW = 2,
OLECMDID_SAVE = 3,
OLECMDID_SAVEAS = 4,
OLECMDID_SAVECOPYAS = 5,
OLECMDID_PRINT = 6,
OLECMDID_PRINTPREVIEW = 7,
OLECMDID_PAGESETUP = 8,
OLECMDID_SPELL = 9,
OLECMDID_PROPERTIES = 10,
OLECMDID_CUT = 11,
OLECMDID_COPY = 12,
OLECMDID_PASTE = 13,
OLECMDID_PASTESPECIAL = 14,
OLECMDID_UNDO = 15,
OLECMDID_REDO = 16,
OLECMDID_selectALL = 17,
OLECMDID_CLEARselectION = 18,
OLECMDID_ZOOM = 19,
OLECMDID_GETZOOMRANGE = 20
OLECMDID_updateCOMMANDS = 21
OLECMDID_REFRESH = 22
OLECMDID_STOP = 23
OLECMDID_HIDETOOLBARS = 24
OLECMDID_SETPROGRESSMAX = 25
OLECMDID_SETPROGRESSPOS = 26
OLECMDID_SETPROGRESSTEXT = 27
OLECMDID_SETTITLE = 28
OLECMDID_SETDOWNLOADSTATE = 29
OLECMDID_STOPDOWNLOAD = 30
上面的關(guān)鍵詞都可以在瀏覽器的菜單里面找到對應(yīng)的選項﹐大家一看就明白的﹗
(b).nCmdExecOpt
OLECMDEXECOPT_DODEFAULT = 0,
OLECMDEXECOPT_PROMPTUSER = 1,
LECMDEXECOPT_DONTPROMPTUSER = 2,
OLECMDEXECOPT_SHOWHELP = 3
對于這個參數(shù)﹐一般來說﹐選1就可以了。
4.常用:
WebBrowser.ExecWB(1,1) 打開
WebBrowser.ExecWB(2,1) 關(guān)閉現(xiàn)在所有的IE窗口,并打開一個新窗口
WebBrowser.ExecWB(4,1) 保存網(wǎng)頁
WebBrowser.ExecWB(6,1) 打印
WebBrowser.ExecWB(7,1) 打印預(yù)覽
WebBrowser.ExecWB(8,1) 打印頁面設(shè)置
WebBrowser.ExecWB(10,1) 查看頁面屬性
WebBrowser.ExecWB(15,1) 好像是撤銷,有待確認(rèn)
WebBrowser.ExecWB(17,1) 全選
WebBrowser.ExecWB(22,1) 刷新
WebBrowser.ExecWB(45,1) 關(guān)閉窗體無提示
5.示例﹕
(a)調(diào)用IE的”另存為”功能的示例﹕
<object id="WebBrowser" width=0 height=0 classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></object>
<A href="javascript:WebBrowser.ExecWB(4,1);">Save-存儲</A>
(b)經(jīng)過改寫的登陸模式
<object id="WebBrowser" width=0 height=0 classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></object>
<body onload="showModalDialog('login_access.asp',0,'Status:NO;dialogWidth:418px;dialogHeight:288px');document.all.WebBrowser.ExecWB(45,1);">
<OBJECT classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 id=WebBrowser width=0></OBJECT>
<input name=Button onClick=document.all.WebBrowser.ExecWB(1,1) type=button value=打開>
<input name=Button onClick=document.all.WebBrowser.ExecWB(2,1) type=button value=關(guān)閉所有>
<input name=Button onClick=document.all.WebBrowser.ExecWB(4,1) type=button value=另存為>
<input name=Button onClick=document.all.WebBrowser.ExecWB(6,1) type=button value=打印>
<input name=Button onClick=document.all.WebBrowser.ExecWB(6,6) type=button value=直接打印>
<input name=Button onClick=document.all.WebBrowser.ExecWB(7,1) type=button value=打印預(yù)覽>
<input name=Button onClick=document.all.WebBrowser.ExecWB(8,1) type=button value=頁面設(shè)置>
<input name=Button onClick=document.all.WebBrowser.ExecWB(10,1) type=button value=屬性>
<input name=Button onClick=document.all.WebBrowser.ExecWB(17,1) type=button value=全選>
<input name=Button onClick=document.all.WebBrowser.ExecWB(22,1) type=button value=刷新>
<input name=Button onClick=document.all.WebBrowser.ExecWB(45,1) type=button value=關(guān)閉>