IWebBrowserApp
IWebBrowserApp
接口僅僅在IE中實(shí)現(xiàn)。 典型的,你使用InternetExplorer 對(duì)象創(chuàng)建一個(gè)IE的實(shí)例. 然后你使用 IWebBrowserApp 接口操縱此實(shí)例. (今天采用IWebBrowser2 替代) IWebBrowserApp 接口繼承自 IWebBrowser, 所以它提供 IWebBrowser 的全部功能。
因?yàn)?em>IWebBrowserApp呈現(xiàn)一個(gè)IE窗口的實(shí)例, 所以它的方法和屬性典型地允許你控制瀏覽器窗口的用戶接口。 這些方法和屬性并非包含在WebBrowser的 IWebBrowser 中的:寄宿control的應(yīng)用程序提供諸如狀態(tài)條, 工具條, 以及菜單條等用戶接口. WebBrowser 控件僅僅用于裝載web頁(yè)以及其它類(lèi)型文件。
IWebBrowserApp
有4個(gè)方法和10 各屬性。
方法
IWebBrowserApp
接口的屬性很直觀立如下表, 但是有2個(gè)有理由值的討論:GetProperty 和 PutProperty. 此兩個(gè)方法允許你在IE屬性包(property bag)中存儲(chǔ)一個(gè)屬性一邊你能夠在其后重新找回他們。 你將典型地從一個(gè)web頁(yè)上存儲(chǔ)一些狀態(tài)信息到另一個(gè)web頁(yè) (事實(shí)上,使用IWebBrowser2 接口你可以在宿主一個(gè)WebBrowser 控件時(shí)候使用此方法)
Table 6-3.
IWebBrowserApp vtable 次序的方法
|
方法
|
描述
|
|
Quit
|
促使
Internet Explorer
窗口關(guān)閉。換句話講,將自動(dòng)化操作關(guān)閉
IE
實(shí)例
|
|
ClientToWindow
|
轉(zhuǎn)換一個(gè)點(diǎn)從窗口坐標(biāo)到客戶坐標(biāo)。
|
|
PutProperty
|
存儲(chǔ)一個(gè)屬性值到
ie
的屬性包,將可以隨手采用
GetProperty
.
獲取
|
|
GetProperty
|
獲取先前由
PutProperty
.
方法存儲(chǔ)的屬性值
|
VB代碼:
InternetExplorer1.PutProperty "CurrentPicture", 10
InternetExplorer1.GetProperty("CurrentPicture")
VC++代碼:
CSomeClass::PutGetProperty(VARIANT vtCurrentValue, VARIANT* vtNewValue)
{
HRESULT hr;
hr = m_pInternetExplorer->PutProperty(L"CurrentPicture", vtCurrentValue);
if (SUCCEEDED(hr))
{
// Notice that vtNewValue is already a pointer, so you
// don't have to pass the address to GetProperty.
//
hr = m_pInternetExplorer->GetProperty(L"CurrentPicture", vtNewValue);
}
return hr;
}
PutGetProperty
方法接受包含當(dāng)前屬性值的 VARIANT 變量指針且將接收屬性值。
屬性
IWebBrowserApp
接口有10 個(gè)屬性. Table 6-4. IWebBrowserApp vtable 次序的屬性
|
屬性
|
描述
|
|
Name
|
返回對(duì)象的名稱(chēng)
t. (
舉例,當(dāng)自動(dòng)化
IE
,
Name
屬性將返回
Microsoft Internet Explorer
.)
|
|
HWND
|
返回
IE
窗口的句柄
|
|
FullName
|
返回
ie
可執(zhí)行文件的全路徑
(iexplore.exe).
|
|
Path
|
返回
IE
應(yīng)用程序的全路徑
.
|
|
Visible
|
監(jiān)測(cè)和設(shè)置
IE
窗口是否可見(jiàn)。
(
換句話講,你可與使用此屬性顯示
/
隱藏
)
|
|
StatusBar
|
顯示或者隱藏
IE
狀態(tài)條,也可監(jiān)測(cè)當(dāng)前狀態(tài)條
|
|
StatusText
|
設(shè)置或隱藏狀態(tài)條文字
|
|
ToolBar
|
顯示或者隱藏
IE
工具條,也可監(jiān)測(cè)當(dāng)前工具條狀態(tài)
|
|
MenuBar
|
顯示或者隱藏
IE
菜單條,也可監(jiān)測(cè)當(dāng)前工具菜單態(tài)
|
|
FullScreen
|
設(shè)置或者檢測(cè)一個(gè)值指示
IE
當(dāng)前是否最大化顯示。最大化顯示,
iE
占據(jù)整個(gè)屏幕
|
Table 6-4 中的屬性列表直截了當(dāng)且易于使用。舉例來(lái)說(shuō), 如果你想從你的Vb程序中獲取IE狀態(tài)條中的文字,你應(yīng)當(dāng)使用如下代碼:
Dim strStatusText
strStatusText = InternetExplorer1.StatusText
使用MFC包裝類(lèi)的VC++程序代碼如下:
BSTR bstrStatusText;
HRESULT hr = m_pInternetExplorer->get_StatusText(&bstrStatusText);
IWebBrowser2
因?yàn)?span lang="EN-US">COM規(guī)則要求接口恒久不變, 要加入新的工呢高COM,你必須增加新的接口。 新的接口可擴(kuò)展自其他接口已擴(kuò)展功能。 舉例,當(dāng)心的需求引入WebBrowser 和Internet Explorer 接口, 開(kāi)發(fā)者被要求建立一個(gè)新的接口: IWebBrowser2.
早期, IWebBrowser2 繼承自 IWebBrowser 和 IWebBrowserApp,還提供不包含在著兩個(gè)接口中的功能. 所以你應(yīng)當(dāng)使用IWebBrowser2 接口替代 來(lái)操縱WebBrowser 控件或者 Internet Explorer.
IWebBrowser2
接口有4個(gè)方法和8個(gè)屬性.
方法
IWebBrowser2
接口方法如下描述,按照 vtable 次序, in Table 6-5.
也許IWebBrowser2 、接口踵使用最多的方法是ExecWB. 它通過(guò)WebBrowser實(shí)現(xiàn)了一個(gè) IOleCommandTarget 接口的Exec的包裝實(shí)現(xiàn)。 在 ExecWB 方法 被創(chuàng)建前, 你不可以直接從VB中調(diào)用IOleCommandTarget::Exec, 因?yàn)閂B不可訪問(wèn) IOleCommandTarget 接口 ,因而VB不可直接使用該接口的ExecWB方法。 IOleCommandTarget::Exec 方法過(guò)去大量使用,所以 WebBrowser 開(kāi)發(fā)者決定創(chuàng)建ExecWB 以使事情變得容易。
Table 6-5.
IWebBrowser2 Vtable 次序的方法
|
方法
|
描述
|
|
Navigate2
|
功能基于
Navigate
方法,不同在于
Navigate2
允許你導(dǎo)航到飛
URL
表達(dá)的地方,例如
Windows shell folder. (Windows shell folder
是指向標(biāo)示符指針
,
或者
windows shell
命名空間中的
PIDL,)
|
|
QueryStatusWB
|
IoleCommandTarget
接口的
QueryStatus
方法在
WebBrowser.
中的包裝實(shí)現(xiàn)
|
|
ExecWB
|
IoleCommandTarget
接口的
Exec
方法在
WebBrowser.
中的包裝實(shí)現(xiàn)
|
|
ShowBrowserBar
|
顯示或者隱藏特定的瀏覽器條
.
該方法僅僅用于
InternetExplorer
對(duì)象
|
為什么你無(wú)論如何都要調(diào)用ExecWB方法?因?yàn)樗峁┝四阈枰墓δ埽ㄍㄟ^(guò)IOleCommandTarget::Exec)不是暴露于webbrowser接口。你大概疑惑于為社么開(kāi)發(fā)者不實(shí)現(xiàn)擴(kuò)展屬性和方法。記住:COM規(guī)則是一旦接口發(fā)表就不可改變。所以你不能夠不能增加功能而不創(chuàng)建新的接口。
ExecWB
方法允許WebBrowser 開(kāi)發(fā)者增加新的功能而不用創(chuàng)建新的接口。再之, 那是由WebBrowser 通過(guò) ExecWB 代表性的暴露不常用的工的途徑, 譬如調(diào)用 Save As 對(duì)話框或者縮放web頁(yè)的字體。 ExecWB 工作的方法是傳遞一個(gè)你想調(diào)用的command ID 和必需的參數(shù). 太多的 command IDs ,他們包含于OLECMDID 實(shí)現(xiàn)文檔頭文件he DocObj.h .
作為舉例, 支持縮放web頁(yè)的內(nèi)容字體。Internet Explorer 允許你通過(guò)View菜單的Text Size子菜單改變字體的大小從最小到最大。 ExecWB 方法暴露了允許你改變顯示在瀏覽器中的文字大小。對(duì)于Zoom 命令, 你可指定特殊值0, 1, 2, 3, or 4, 0 是最小字體 ,4是最大字體。以下舉例為改變字體為最大(VB):
WebBrowser1.ExecWB OLECMDID_ZOOM, OLECMDEXECOPT_DONTPROMPTUSER, _CLng(4), Null
再次代碼中, 我調(diào)用 ExecWB 方法, 傳遞OLECMDID_ZOOM 常量給第一個(gè)參數(shù). 此常量指定 zoom 操作將被執(zhí)行。 第二個(gè)參數(shù)傳遞給ExecWB 不要提示用戶。另外的選擇, 你可以提醒用戶而是用OLECMDEXECOPT_PROMPTUSER. (見(jiàn) DocObj.h.)
第三個(gè)輸入?yún)?shù)指示要設(shè)定的文字尺寸。我想是文字盡可能的大,所以我指定了4 。注意我在調(diào)用中使用了VB的Clng函數(shù)包裝此值,轉(zhuǎn)換我指定的此值為一個(gè)variant—輸入需要的類(lèi)型.最后為一個(gè)輸出參數(shù)包含任何返回值。因?yàn)榉祷刂挡恍枰P(guān)心,我傳遞Null.
屬性
IWebBrowser2
接口有8個(gè)屬性。 (Table 6-6 按照vtable次序展示其)。他們都很直觀,我僅僅解釋恰宏很特別的一個(gè)—AddressBar.
Table 6-6.
IWebBrowser2 Properties in Vtable Order
|
屬性
|
描述
|
|
ReadyState
|
返回
WebBrowser
的狀態(tài)
(
換句話講
,該屬性指示文檔是否完成裝載
).
盡管你可以使用
ReadyState
屬性
,
使用
DocumentComplete
時(shí)間檢測(cè)文檔是否裝載還是比較好些。
(
那意味著所有
HTML
和文檔被裝載
|
|
Offline
|
.
返回或者設(shè)置檢測(cè)
webbrowser
是否處于脫機(jī)模式的變量
|
|
Silent
|
返回或設(shè)置
WebBrowser
是否處于沉默模式。如果處于沉默模式,意味著沒(méi)有對(duì)話框可以被顯示
.
|
|
RegisterAsBrowser
|
.
設(shè)置或者檢測(cè)
Webbrowser
是否是作為頂層瀏覽器被登記
|
|
RegisterAsDropTarget
|
.
設(shè)置或返回
WebBrowser
是否作為導(dǎo)航的拖放對(duì)象
。如果登記委托放對(duì)象
,
用戶可直接拖放連接到瀏覽器
|
|
TheaterMode
|
返回或者設(shè)置
Internet Explorer
是否處于
theater
或者
normal window
模式
.
。在
theater
模式
, Internet Explorer
占據(jù)整個(gè)屏幕就像處于
FullScreen
模式,但也有最小化的用戶接口元素
(
此屬性僅僅展示于
InternetExplorer
對(duì)象
)
|
|
AddressBar
|
顯示或者隱藏地址欄
(
此屬性僅僅展示于
InternetExplorer
對(duì)象
)
|
|
Resizable
|
返回或者設(shè)置
Internet Explorer
是否可被調(diào)整大小
,
你可利用此屬性防止用戶改變
webbrowser
的大小
(
此屬性僅僅展示于
InternetExplorer
對(duì)象
)
|
AddressBar
屬性允許你顯示/隱藏Internet Explorer 地址欄—一個(gè)包含可輸入U(xiǎn)RL的文本框 允許你導(dǎo)航到某個(gè)Url。 能夠顯示或者隱藏地址條允許你完全控制你的用戶的導(dǎo)航體驗(yàn)
在你的企業(yè)網(wǎng)絡(luò)或者中小學(xué)控制用戶導(dǎo)航體驗(yàn).在此環(huán)境下,你將控制用戶的導(dǎo)航以至于可確定某些不恰當(dāng)?shù)仨?yè)面不可訪問(wèn)。你可創(chuàng)建你自己的瀏覽器。但是如果你沒(méi)有時(shí)間和資源這么做,你可以自動(dòng)化IE來(lái)代替.自動(dòng)化IE允許你管掉所有的用戶界面允許用戶導(dǎo)航到某個(gè)web頁(yè),像菜單條, 工具條,以地址欄. 之后你可建立一定數(shù)量的可訪問(wèn)web頁(yè)連接列表給用戶。
關(guān)掉這些用戶接口很容易. VB代碼:
InternetExplorer1.AddressBar = False
InternetExplorer1.ToolBar = False
InternetExplorer1.MenuBar = False