• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            yehao's Blog

            如何對webbrowser和IE編程(三)

            http://blog.csdn.net/shanhe/article/details/397373 
            IWebBrowserApp

            IWebBrowserApp 接口僅僅在IE中實現(xiàn)。 典型的,你使用InternetExplorer 對象創(chuàng)建一個IE的實例. 然后你使用 IWebBrowserApp 接口操縱此實例. (今天采用IWebBrowser2 替代)IWebBrowserApp 接口繼承自 IWebBrowser, 所以它提供 IWebBrowser 的全部功能。

            因為IWebBrowserApp呈現(xiàn)一個IE窗口的實例, 所以它的方法和屬性典型地允許你控制瀏覽器窗口的用戶接口。 這些方法和屬性并非包含在WebBrowser的 IWebBrowser 中的:寄宿control的應(yīng)用程序提供諸如狀態(tài)條, 工具條, 以及菜單條等用戶接口. WebBrowser 控件僅僅用于裝載web頁以及其它類型文件。

            IWebBrowserApp 有4個方法和10 各屬性。

            方法 IWebBrowserApp 接口的屬性很直觀立如下表, 但是有2個有理由值的討論:GetProperty 和PutProperty. 此兩個方法允許你在IE屬性包(property bag)中存儲一個屬性一邊你能夠在其后重新找回他們。 你將典型地從一個web頁上存儲一些狀態(tài)信息到另一個web頁 (事實上,使用IWebBrowser2 接口你可以在宿主一個WebBrowser 控件時候使用此方法)

            Table 6-3. IWebBrowserApp  vtable 次序的方法

            方法

             

             

            描述

             

             

            Quit

             

             

            促使 Internet Explorer 窗口關(guān)閉。換句話講,將自動化操作關(guān)閉IE實例

             

             

            ClientToWindow

             

             

            轉(zhuǎn)換一個點從窗口坐標到客戶坐標。

             

             

            PutProperty

             

             

            存儲一個屬性值到ie的屬性包,將可以隨手采用GetProperty.獲取

             

             

            GetProperty

             

             

            獲取先前由 PutProperty.方法存儲的屬性值

             

             

            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 方法接受包含當前屬性值的 VARIANT 變量指針且將接收屬性值。

            屬性 IWebBrowserApp 接口有10 個屬性. Table 6-4. IWebBrowserApp vtable 次序的屬性

            屬性

             

             

            描述

             

             

            Name

             

             

            返回對象的名稱t. (舉例,當自動化IE Name 屬性將返回 Microsoft Internet Explorer.)

             

             

            HWND

             

             

            返回IE窗口的句柄

             

             

            FullName

             

             

            返回ie可執(zhí)行文件的全路徑 (iexplore.exe).

             

             

            Path

             

             

            返回IE應(yīng)用程序的全路徑.

             

             

            Visible

             

             

            監(jiān)測和設(shè)置IE窗口是否可見。 (換句話講,你可與使用此屬性顯示/隱藏)

             

             

            StatusBar

             

             

            顯示或者隱藏IE狀態(tài)條,也可監(jiān)測當前狀態(tài)條

             

             

            StatusText

             

             

            設(shè)置或隱藏狀態(tài)條文字

             

             

            ToolBar

             

             

            顯示或者隱藏IE工具條,也可監(jiān)測當前工具條狀態(tài) 

             

             

            MenuBar

             

             

            顯示或者隱藏IE菜單條,也可監(jiān)測當前工具菜單態(tài) 

             

             

            FullScreen

             

             

            設(shè)置或者檢測一個值指示IE當前是否最大化顯示。最大化顯示,iE占據(jù)整個屏幕

             

             

            Table 6-4 中的屬性列表直截了當且易于使用。舉例來說, 如果你想從你的Vb程序中獲取IE狀態(tài)條中的文字,你應(yīng)當使用如下代碼:

            Dim strStatusText
            strStatusText = InternetExplorer1.StatusText

            使用MFC包裝類的VC++程序代碼如下:

            BSTR bstrStatusText;
            HRESULT hr = m_pInternetExplorer->get_StatusText(&bstrStatusText);

             

             

            IWebBrowser2

            因為COM規(guī)則要求接口恒久不變, 要加入新的工呢高COM,你必須增加新的接口。 新的接口可擴展自其他接口已擴展功能。 舉例,當心的需求引入WebBrowser 和Internet Explorer 接口, 開發(fā)者被要求建立一個新的接口: IWebBrowser2.

            早期, IWebBrowser2 繼承自 IWebBrowser 和 IWebBrowserApp, 還提供不包含在著兩個接口中的功能. 所以你應(yīng)當使用 IWebBrowser2 接口替代 來操縱WebBrowser 控件或者 Internet Explorer.

            IWebBrowser2 接口有4個方法和8個屬性.

            方法   IWebBrowser2 接口方法如下描述,按照 vtable 次序, in Table 6-5.

            也許IWebBrowser2 、接口踵使用最多的方法是ExecWB. 它通過WebBrowser實現(xiàn)了一個 IOleCommandTarget 接口的Exec的包裝實現(xiàn)。 在 ExecWB 方法 被創(chuàng)建前, 你不可以直接從VB中調(diào)用IOleCommandTarget::Exec, 因為VB不可訪問 IOleCommandTarget 接口 ,因而VB不可直接使用該接口的ExecWB方法。 IOleCommandTarget::Exec 方法過去大量使用,所以 WebBrowser 開發(fā)者決定創(chuàng)建ExecWB 以使事情變得容易。

             

            Table 6-5. IWebBrowser2  Vtable 次序的方法

            方法

             

             

            描述

             

             

            Navigate2

             

             

            功能基于Navigate 方法,不同在于 Navigate2 允許你導航到飛URL表達的地方,例如Windows shell folder. (Windows shell folder 是指向標示符指針或者windows shell命名空間中的 PIDL,)

             

             

            QueryStatusWB

             

             

            IoleCommandTarget接口的QueryStatus方法在 WebBrowser.中的包裝實現(xiàn)

             

             

            ExecWB

             

             

            IoleCommandTarget接口的Exec方法在 WebBrowser.中的包裝實現(xiàn)

             

             

            ShowBrowserBar

             

             

            顯示或者隱藏特定的瀏覽器條該方法僅僅用于InternetExplorer 對象

             

             

             

            為什么你無論如何都要調(diào)用ExecWB方法?因為它提供了你需要的功能(通過IOleCommandTarget::Exec)不是暴露于webbrowser接口。你大概疑惑于為社么開發(fā)者不實現(xiàn)擴展屬性和方法。記住:COM規(guī)則是一旦接口發(fā)表就不可改變。所以你不能夠不能增加功能而不創(chuàng)建新的接口。

            ExecWB 方法允許WebBrowser 開發(fā)者增加新的功能而不用創(chuàng)建新的接口。再之, 那是由WebBrowser 通過 ExecWB 代表性的暴露不常用的工的途徑, 譬如調(diào)用 Save As 對話框或者縮放web頁的字體。  ExecWB 工作的方法是傳遞一個你想調(diào)用的command ID 和必需的參數(shù). 太多的 command IDs ,他們包含于OLECMDID 實現(xiàn)文檔頭文件he DocObj.h .

             

             

            作為舉例, 支持縮放web頁的內(nèi)容字體。Internet Explorer 允許你通過View菜單的Text Size子菜單改變字體的大小從最小到最大。 ExecWB 方法暴露了允許你改變顯示在瀏覽器中的文字大小。對于Zoom 命令, 你可指定特殊值0123, or 4,  是最小字體 ,4是最大字體。以下舉例為改變字體為最大(VB):

            WebBrowser1.ExecWB OLECMDID_ZOOM, OLECMDEXECOPT_DONTPROMPTUSER, _
                               CLng(4), Null

            再次代碼中, 我調(diào)用 ExecWB 方法, 傳遞OLECMDID_ZOOM 常量給第一個參數(shù). 此常量指定 zoom 操作將被執(zhí)行。 第二個參數(shù)傳遞給ExecWB 不要提示用戶。另外的選擇, 你可以提醒用戶而是用OLECMDEXECOPT_PROMPTUSER. (見 DocObj.h.)

            第三個輸入?yún)?shù)指示要設(shè)定的文字尺寸。我想是文字盡可能的大,所以我指定了4 。注意我在調(diào)用中使用了VB的Clng函數(shù)包裝此值,轉(zhuǎn)換我指定的此值為一個variant—輸入需要的類型.最后為一個輸出參數(shù)包含任何返回值。因為返回值不需要關(guān)心,我傳遞Null.

             

             

            屬性 IWebBrowser2 接口有8個屬性。 (Table 6-6 按照vtable次序展示其)。他們都很直觀,我僅僅解釋恰宏很特別的一個—AddressBar.

            Table 6-6. IWebBrowser2 Properties in Vtable Order

            屬性

             

             

            描述

             

             

            ReadyState

             

             

            返回WebBrowser 的狀態(tài)(換句話講 ,該屬性指示文檔是否完成裝載).盡管你可以使用 ReadyState 屬性使用 DocumentComplete 時間檢測文檔是否裝載還是比較好些。 (那意味著所有HTML和文檔被裝載

             

             

            Offline

             

             

            .返回或者設(shè)置檢測webbrowser是否處于脫機模式的變量

             

             

            Silent

             

             

            返回或設(shè)置 WebBrowser 是否處于沉默模式。如果處于沉默模式,意味著沒有對話框可以被顯示.

             

             

            RegisterAsBrowser

             

             

            .設(shè)置或者檢測Webbrowser是否是作為頂層瀏覽器被登記

             

             

            RegisterAsDropTarget

             

             

            .設(shè)置或返回WebBrowser是否作為導航的拖放對象 。如果登記委托放對象,用戶可直接拖放連接到瀏覽器  

             

             

            TheaterMode

             

             

            返回或者設(shè)置Internet Explorer是否處于theater 或者 normal window 模式.。在theater 模式, Internet Explorer占據(jù)整個屏幕就像處于FullScreen 模式,但也有最小化的用戶接口元素 (此屬性僅僅展示于InternetExplorer對象)

             

             

            AddressBar

             

             

            顯示或者隱藏地址欄(此屬性僅僅展示于InternetExplorer 對象)

             

             

            Resizable

             

             

            返回或者設(shè)置Internet Explorer是否可被調(diào)整大小你可利用此屬性防止用戶改變webbrowser的大小(此屬性僅僅展示于InternetExplorer 對象)

             

             

             

             

            AddressBar 屬性允許你顯示/隱藏Internet Explorer 地址欄—一個包含可輸入URL的文本框 允許你導航到某個Url。 能夠顯示或者隱藏地址條允許你完全控制你的用戶的導航體驗

            在你的企業(yè)網(wǎng)絡(luò)或者中小學控制用戶導航體驗.在此環(huán)境下,你將控制用戶的導航以至于可確定某些不恰當?shù)仨撁娌豢稍L問。你可創(chuàng)建你自己的瀏覽器。但是如果你沒有時間和資源這么做,你可以自動化IE來代替.自動化IE允許你管掉所有的用戶界面允許用戶導航到某個web頁,像菜單條, 工具條,以地址欄. 之后你可建立一定數(shù)量的可訪問web頁連接列表給用戶。

             

            關(guān)掉這些用戶接口很容易. VB代碼:

            InternetExplorer1.AddressBar = False
            InternetExplorer1.ToolBar = False
            InternetExplorer1.MenuBar = False

            posted on 2012-09-22 21:32 厚積薄發(fā) 閱讀(524) 評論(0)  編輯 收藏 引用 所屬分類: Windows編程

            導航

            <2025年6月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            293012345

            統(tǒng)計

            常用鏈接

            留言簿

            隨筆分類

            文章分類

            文章檔案

            搜索

            最新評論

            亚洲人成无码网站久久99热国产| 久久精品国产亚洲AV忘忧草18| 国内精品久久国产| 久久久久国产| 热久久国产欧美一区二区精品| 伊人久久综合热线大杳蕉下载| 久久精品国产亚洲av麻豆色欲 | 精品无码久久久久国产| 四虎国产精品成人免费久久| 中文字幕无码av激情不卡久久| 久久亚洲2019中文字幕| 伊人色综合久久天天人守人婷 | 久久精品无码一区二区WWW| 久久91精品国产91| 无码专区久久综合久中文字幕 | 久久婷婷五月综合色高清| 久久大香香蕉国产| 亚洲欧美精品伊人久久| 久久天天躁狠狠躁夜夜av浪潮| 色综合久久天天综线观看| 伊人久久综合成人网| 精品久久久噜噜噜久久久| 国产精品九九九久久九九| 久久久WWW免费人成精品| 国产精品久久婷婷六月丁香| 999久久久无码国产精品| 久久国产香蕉一区精品| 亚洲午夜久久久久久久久久| jizzjizz国产精品久久| 久久99精品久久久久久野外| 亚洲午夜久久久影院| 久久精品国产WWW456C0M| 色狠狠久久AV五月综合| 久久青青草原精品国产不卡| 久久精品亚洲一区二区三区浴池 | 久久亚洲日韩精品一区二区三区| avtt天堂网久久精品| 久久国产精品免费一区| 色综合久久无码五十路人妻| 婷婷久久综合| 久久国产成人精品国产成人亚洲|