IWebBrowserApp
IWebBrowserApp 接口僅僅在IE中實作。 典型的,你使用InternetExplorer 對象建立一個IE的執行個體. 然後你使用 IWebBrowserApp 接口操縱此執行個體. (今天采用IWebBrowser2 替代) IWebBrowserApp 接口繼承自 IWebBrowser, 是以它提供 IWebBrowser 的全部功能。
因為IWebBrowserApp呈現一個IE視窗的執行個體, 是以它的方法和屬性典型地允許你控制浏覽器視窗的使用者接口。 這些方法和屬性并非包含在WebBrowser的 IWebBrowser 中的:寄宿control的應用程式提供諸如狀态條, 工具條, 以及菜單條等使用者接口. WebBrowser 控件僅僅用于裝載web頁以及其它類型檔案。
IWebBrowserApp 有4個方法和10 各屬性。
方法IWebBrowserApp 接口的屬性很直覺立如下表, 但是有2個有理由值的讨論:GetProperty 和 PutProperty. 此兩個方法允許你在IE屬性包(property bag)中存儲一個屬性一邊你能夠在其後重新找回他們。 你将典型地從一個web頁上存儲一些狀态資訊到另一個web頁 (事實上,使用IWebBrowser2 接口你可以在宿主一個WebBrowser 控件時候使用此方法)
Table 6-3.IWebBrowserApp vtable 次序的方法
方法 | 描述 |
Quit | 促使 Internet Explorer 視窗關閉。換句話講,将自動化操作關閉IE執行個體 |
ClientToWindow | 轉換一個點從視窗坐标到客戶坐标。 |
PutProperty | 存儲一個屬性值到ie的屬性包,将可以随手采用GetProperty.擷取 |
GetProperty | 擷取先前由 PutProperty.方法存儲的屬性值 |
VB代碼:
|
VC++代碼:
|
PutGetProperty 方法接受包含目前屬性值的 VARIANT 變量指針且将接收屬性值。
屬性IWebBrowserApp 接口有10 個屬性.
Table 6-4.IWebBrowserApp vtable 次序的屬性
屬性 | 描述 |
Name | 傳回對象的名稱t. (舉例,當自動化IE, Name 屬性将傳回 Microsoft Internet Explorer.) |
HWND | 傳回IE視窗的句柄 |
FullName | 傳回ie可執行檔案的全路徑 (iexplore.exe). |
Path | 傳回IE應用程式的全路徑. |
Visible | 監測和設定IE視窗是否可見。 (換句話講,你可與使用此屬性顯示/隐藏) |
StatusBar | 顯示或者隐藏IE狀态條,也可監測目前狀态條 |
StatusText | 設定或隐藏狀态條文字 |
ToolBar | 顯示或者隐藏IE工具條,也可監測目前工具條狀态 |
MenuBar | 顯示或者隐藏IE菜單條,也可監測目前工具菜單态 |
FullScreen | 設定或者檢測一個值訓示IE目前是否最大化顯示。最大化顯示,iE占據整個螢幕 |
Table 6-4 中的屬性清單直截了當且易于使用。舉例來說, 如果你想從你的Vb程式中擷取IE狀态條中的文字,你應當使用如下代碼:
|
使用MFC包裝類的VC++程式代碼如下:
|
IWebBrowser2
因為COM規則要求接口恒久不變, 要加入新的工呢高COM,你必須增加新的接口。 新的接口可擴充自其他接口已擴充功能。 舉例,當心的需求引入WebBrowser 和Internet Explorer 接口, 開發者被要求建立一個新的接口: IWebBrowser2.
早期, IWebBrowser2 繼承自 IWebBrowser 和 IWebBrowserApp, 還提供不包含在着兩個接口中的功能. 是以你應當使用 IWebBrowser2 接口替代 來操縱WebBrowser 控件或者 Internet Explorer.
IWebBrowser2 接口有4個方法和8個屬性.
方法IWebBrowser2 接口方法如下描述,按照 vtable 次序, in Table 6-5.
也許IWebBrowser2 、接口踵使用最多的方法是ExecWB. 它通過WebBrowser實作了一個 IOleCommandTarget 接口的Exec的包裝實作。 在 ExecWB 方法 被建立前, 你不可以直接從VB中調用IOleCommandTarget::Exec, 因為VB不可通路 IOleCommandTarget 接口 ,因而VB不可直接使用該接口的ExecWB方法。 IOleCommandTarget::Exec 方法過去大量使用,是以 WebBrowser 開發者決定建立ExecWB 以使事情變得容易。
Table 6-5.IWebBrowser2 Vtable 次序的方法
方法 | 描述 |
Navigate2 | 功能基于Navigate 方法,不同在于 Navigate2 允許你導航到飛URL表達的地方,例如Windows shell folder. (Windows shell folder 是指向标示符指針, 或者windows shell命名空間中的 PIDL,) |
QueryStatusWB | IoleCommandTarget接口的QueryStatus方法在 WebBrowser.中的包裝實作 |
ExecWB | IoleCommandTarget接口的Exec方法在 WebBrowser.中的包裝實作 |
ShowBrowserBar | 顯示或者隐藏特定的浏覽器條. 該方法僅僅用于InternetExplorer 對象 |
為什麼你無論如何都要調用ExecWB方法?因為它提供了你需要的功能(通過IOleCommandTarget::Exec)不是暴露于webbrowser接口。你大概疑惑于為社麼開發者不實作擴充屬性和方法。記住:COM規則是一旦接口發表就不可改變。是以你不能夠不能增加功能而不建立新的接口。
ExecWB 方法允許WebBrowser 開發者增加新的功能而不用建立新的接口。再之, 那是由WebBrowser 通過 ExecWB 代表性的暴露不常用的工的途徑, 譬如調用 Save As 對話框或者縮放web頁的字型。 ExecWB 工作的方法是傳遞一個你想調用的command ID 和必需的參數. 太多的 command IDs ,他們包含于OLECMDID 實作文檔頭檔案he DocObj.h .
作為舉例, 支援縮放web頁的内容字型。Internet Explorer 允許你通過View菜單的Text Size子菜單改變字型的大小從最小到最大。 ExecWB 方法暴露了允許你改變顯示在浏覽器中的文字大小。對于Zoom 指令, 你可指定特殊值0, 1, 2, 3, or 4, 0 是最小字型 ,4是最大字型。以下舉例為改變字型為最大(VB):
|
再次代碼中, 我調用 ExecWB 方法, 傳遞OLECMDID_ZOOM 常量給第一個參數. 此常量指定 zoom 操作将被執行。 第二個參數傳遞給ExecWB 不要提示使用者。另外的選擇, 你可以提醒使用者而是用OLECMDEXECOPT_PROMPTUSER. (見 DocObj.h.)
第三個輸入參數訓示要設定的文字尺寸。我想是文字盡可能的大,是以我指定了4 。注意我在調用中使用了VB的Clng函數包裝此值,轉換我指定的此值為一個variant—輸入需要的類型.最後為一個輸出參數包含任何傳回值。因為傳回值不需要關心,我傳遞Null.
屬性IWebBrowser2 接口有8個屬性。 (Table 6-6 按照vtable次序展示其)。他們都很直覺,我僅僅解釋恰宏很特别的一個—AddressBar.
Table 6-6.IWebBrowser2 Properties in Vtable Order
屬性 | 描述 |
ReadyState | 傳回WebBrowser 的狀态(換句話講 ,該屬性訓示文檔是否完成裝載). 盡管你可以使用 ReadyState 屬性, 使用 DocumentComplete 時間檢測文檔是否裝載還是比較好些。 (那意味着所有HTML和文檔被裝載 |
Offline | .傳回或者設定檢測webbrowser是否處于脫機模式的變量 |
Silent | 傳回或設定 WebBrowser 是否處于沉默模式。如果處于沉默模式,意味着沒有對話框可以被顯示. |
RegisterAsBrowser | .設定或者檢測Webbrowser是否是作為頂層浏覽器被登記 |
RegisterAsDropTarget | .設定或傳回WebBrowser是否作為導航的拖放對象 。如果登記委托放對象,使用者可直接拖放連接配接到浏覽器 |
TheaterMode | 傳回或者設定Internet Explorer是否處于theater 或者 normal window 模式.。在theater 模式, Internet Explorer占據整個螢幕就像處于FullScreen 模式,但也有最小化的使用者接口元素 (此屬性僅僅展示于InternetExplorer 對象) |
AddressBar | 顯示或者隐藏位址欄(此屬性僅僅展示于InternetExplorer 對象) |
Resizable | 傳回或者設定Internet Explorer是否可被調整大小, 你可利用此屬性防止使用者改變webbrowser的大小(此屬性僅僅展示于InternetExplorer 對象) |
AddressBar 屬性允許你顯示/隐藏Internet Explorer 位址欄—一個包含可輸入URL的文本框 允許你導航到某個Url。 能夠顯示或者隐藏位址條允許你完全控制你的使用者的導航體驗
在你的企業網絡或者中國小控制使用者導航體驗.在此環境下,你将控制使用者的導航以至于可确定某些不恰當地頁面不可通路。你可建立你自己的浏覽器。但是如果你沒有時間和資源這麼做,你可以自動化IE來代替.自動化IE允許你管掉所有的使用者界面允許使用者導航到某個web頁,像菜單條, 工具條,以位址欄. 之後你可建立一定數量的可通路web頁連接配接清單給使用者。
關掉這些使用者接口很容易. VB代碼:
|