• <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>

            牽著老婆滿街逛

            嚴(yán)以律己,寬以待人. 三思而后行.
            GMail/GTalk: yanglinbo#google.com;
            MSN/Email: tx7do#yahoo.com.cn;
            QQ: 3 0 3 3 9 6 9 2 0 .

            如何對webbrowser和IE編程(一)

            一、

            因?yàn)楣ぷ骶壒剩枰芯繉?/span> IE 編程,所以翻譯了 MS 的有關(guān)資料,供參考。

             

            IE 的體系

             

            WebBrowser Host

            首先,必須有 COM 的基礎(chǔ)知識(shí),因?yàn)?/span> IE 本身就是 COM 技術(shù)的典型應(yīng)用。我們看到最上層是 WebBrowser 的宿主( Host ),也就是任何你想重用 (ReUse)webbrowser control 的應(yīng)用程序,可以是 vb 程序,也可以是 vc 或者任何其他語言的應(yīng)用程序。應(yīng)用程序必須是可容納 activex 控件的容器。

            Webbrowser control 既是 activex control 也是 activex document 的宿主。作為控件,它可以置于任何 activex 容器,作為文檔容器,它針對特殊的類型,調(diào)用特殊類型注冊的文檔 server 以顯示文檔。如果你想顯示一個(gè) .doc 文檔, webbrowser control 裝載 windows word, ,對于 html 文檔, webbrowser 裝載名為 mshtml 的組件 ( 如圖所示 ) 。針對不同的文檔,你不需要開發(fā)不同的應(yīng)用,僅僅是調(diào)用 webbrowser control 即可。

             

            Shdocvw

            Shdocvw.dll 包含了 webbrowser control ,控制 webbrowser control ( 就像控制其他任何 activex com 控件一樣 ) ,提供瀏覽能力給上層宿主。請注意 webbrowser control 位于第二級中。甚至 IE 也不直接而是通過 shdocw.dll 來使用 webbrowser control 的。盡管 shdocvw 提供了大部分的瀏覽功能,但是并不提供 IE 窗口的呈現(xiàn)功能。盡管如此, shdocvw 還是提供了簡單創(chuàng)建 web 應(yīng)用程序的能力。之后章節(jié)會(huì)講到如何將 ie 的高級特性加入到你的應(yīng)用程序。

             

            MSHTML

            早期的 mshtml 具有讀取顯示 html 的功能。 MSHTML 實(shí)際上是一個(gè) active 文檔服務(wù)器,但是卻可以作為其他控件的容器(如圖中所示的)。記得嗎,你可以將 activex 控件置于 html 中,此時(shí) mshtml 就是一個(gè) activex 宿主,還可以控制其他的控件如 vbscript 腳本引擎和 javascript 腳本引擎, java applet ,geszhong ,各種插件 別意外, plug-in 都是按照 ie activex 規(guī)范寫的。

             

            二、

            WebBrowser Control Internet Explorer

            二者又太多的共同點(diǎn),你都是通過 COM 接口來訪問其功能。當(dāng)調(diào)用 webbrowser 控件時(shí),使用的是 webbrowser 對象,在 vc 中是使用 class ID CLSID_WebBrowser 的接口類。

            當(dāng)自動(dòng)化 ie 時(shí),必須建立名為 InternetExplorer 的對象, vc 等語言中使用名為 class ID CLSID_InternetExplorer 的接口類。

             

             

             

            接口

            webbrowser 4 個(gè)接口(如圖),其中 3 個(gè)提供全部的功能,第 4 個(gè) DWebBrowserEvents2 接口暴露事件

            ie4 之前,僅有 IwebBrowser IwebBrowserApp 兩個(gè)接口,且二者共享相同的功能,當(dāng)開發(fā) ie4 時(shí)候,決定加入第三個(gè)接口 IWebBrowser2 擴(kuò)展 webbrowser 的功能。該接口派生于第二個(gè)接口。

             

            IWebBrowser

            IWebBrowser 僅僅是 WebBrowser control 的最初接口, 提供基本的例如導(dǎo)航 web 頁面的功能。 作為其他派生接口的基礎(chǔ)接口,有 8 個(gè)方法和 30 個(gè)屬性。

            方法

             

              描述

             

            GoBack

             

            導(dǎo)航到歷史列表中的上一個(gè)頁面

             

            GoForward

             

            導(dǎo)航到歷史歷表中的下一個(gè)項(xiàng)目

             

            GoHome

             

            導(dǎo)航到缺省頁面 .

             

            GoSearch

             

            導(dǎo)航到缺省搜索頁面

             

            Navigate

             

            導(dǎo)航到一個(gè)頁面或者頁面

             

            Refresh

             

            刷新當(dāng)前頁面

             

            Refresh2

             

            可以選擇刷新級別,如下:

             

             

            REFRESH_NORMAL 普通刷新,并且不發(fā)送 HTTP pragma:nocache 到服務(wù)器 .

             

             

            REFRESH_IFEXPIRED 僅僅當(dāng)頁面失效時(shí)才發(fā)送刷新請求

             

             

            REFRESH_CONTINUE 內(nèi)部使用,不要在編程時(shí)使用

             

             

            REFRESH_COMPLETELY 發(fā)送 HTTP pragma:nocache header 到服務(wù)器

             

            Stop

             

            停止當(dāng)前導(dǎo)航

             

             

            盡管WebBrowser control 提供了你需要的導(dǎo)航回退以及前向的方法,但是沒有提供存取歷史列表的途徑. 你可與直接通過屬性LocationUR來獲取當(dāng)前頁的URL.

            VB或者VC++中調(diào)用GoBack GoForward 方法式很容易的.你可以使用WebBrowser control 或者 Internet Explorer對象. 舉例來講, 在VB中你可以如下調(diào)用:

            WebBrowser1.GoBack           ' Hosting WebBrowser control
            InternetExplorer1.GoForward  ' Automating Internet Explorer object                    

            VC++中如下:

            m_webBrowser.GoBack();            // Hosting WebBrowser control

            m_pInternetExplorer
            ->GoForward(); // Automating Internet Explorer object

            盡管 GoBack GoForward  方法十分重要,當(dāng)控制WebBrowser control或者自動(dòng)化操作 Internet Explorer, Navigate is 卻是最重要的方法. Navigate 允許你導(dǎo)航到特定的你所想的web頁或者文件. Navigate 帶有5個(gè)參數(shù), 允許你指定特定的URL以實(shí)現(xiàn)導(dǎo)航以及其他定義導(dǎo)航行為的信息.

            第一個(gè)參數(shù)是 URL, 指示web頁的位置和名稱或者何處的文件你想裝載。 (次擦?xí)愋褪?BSTR.) URL 可以是你所使用的標(biāo)準(zhǔn)URL 協(xié)議類型的一種,例如HTTP 和 FILE, 或者是全路經(jīng)文件名的本地文件系統(tǒng), 例如 C:\MyFile.htm.

            第二個(gè)參數(shù), Flags, 你可指定如何或者甚至何處裝載特定的URL. (參數(shù)的類型是指向 VARIANT的指針) Flags 的值來自名為 BrowserNavConstants 的枚舉類型 ,定義于 ExDisp.h 頭文件中且有6個(gè)值, 詳細(xì)解釋見下列表. 你可以指定一個(gè)或者多個(gè)Flags 參數(shù)值 (請留意有些當(dāng)前并未實(shí)現(xiàn)).

            ·         navOpenInNewWindow . 將導(dǎo)致一個(gè)新的窗口打開以顯示URL. 缺省,如果你在自己的應(yīng)用程序中控制 WebBrowser control,這些值將導(dǎo)致新的 Internet Explorer 瀏覽器窗口打開.

            • navNoHistory . 指定此 URL 將不加入到 URL 歷史列表中
            • navNoReadFromCache . 當(dāng)前未實(shí)現(xiàn) .
            • navNoWriteToCache . 當(dāng)前未實(shí)現(xiàn) .
            • navAllowAutoSearch . 如果指定的 URL 未找到,自動(dòng)搜索功能將試圖導(dǎo)航到通常的頂級域名如 .com .net .org 以找到正確的 URL 。如果失敗, URL 將傳遞給搜索引擎 .
            • navBrowserBar . 如果可能,將 URL 裝入到 Explorer 的地址欄 Bar

            第三個(gè)參數(shù) TargetFrameName. 指定web頁的哪一個(gè)frame將會(huì)發(fā)生導(dǎo)航. (參數(shù)的類型是指向 VARIANT的指針)此字符串將為以存在于web頁中的名字或者一個(gè)指定的值如 _top_search.  _top 值指定 URL 將被當(dāng)前最頂層web頁裝入并不在任何一個(gè)當(dāng)前頁中存在的frame.  _search 指示搜索面板將被打開. (該值僅在你自動(dòng)化操控Internet Explorer時(shí)發(fā)生.) 如果你指定的frame名稱并未發(fā)現(xiàn),, 新的Internet Explorer 窗口將被打開。

            你可以使用 PostData 參數(shù) (第四個(gè))通過HTTPpost事務(wù)將指定特定的數(shù)據(jù)發(fā)送到服務(wù)器. (參數(shù)的類型是指向 VARIANT的指針) Post 處理用于將在HTML表單收集的數(shù)據(jù)發(fā)送到服務(wù)器。如果此參數(shù)不指定任何數(shù)據(jù) ,  Navigate 方法將使用Get方法. 另外,如果你不指定 HTTP 協(xié)議的URL (換句話講,如果你指定例如 FILE 協(xié)議的 URL), PostData 參數(shù)將被忽略。

            你也可以使用第五個(gè)參數(shù) , Headers, 以發(fā)送 HTTP 頭信息到服務(wù)器 . (T 參數(shù)的類型是指向 VARIANT 的指針 ) 這些加入的頭信息將被 WebBrowser 控件如常發(fā)送出去 . 作為 PostData 參數(shù) , 如果你并不指定第一個(gè)參數(shù) , Headers 將被忽略 .

            posted on 2006-06-23 21:40 楊粼波 閱讀(1644) 評論(0)  編輯 收藏 引用 所屬分類: Windows編程

            91精品观看91久久久久久| 久久Av无码精品人妻系列| 99久久国产主播综合精品| 久久精品国产72国产精福利| 亚洲精品WWW久久久久久| 久久免费看黄a级毛片| 久久99亚洲网美利坚合众国| 久久er国产精品免费观看8| 亚洲午夜福利精品久久 | 国产精品美女久久久久av爽| 国产精品女同久久久久电影院| 久久综合香蕉国产蜜臀AV| 国产激情久久久久影院小草| 亚洲AV无码久久精品色欲| 精品久久人人爽天天玩人人妻| 国产农村妇女毛片精品久久| 久久天天躁狠狠躁夜夜不卡 | 99久久精品免费看国产一区二区三区| 一本一道久久a久久精品综合 | 久久综合给合久久狠狠狠97色| 久久A级毛片免费观看| 久久久这里只有精品加勒比| 99久久免费国产特黄| 久久国产色av免费看| 日日狠狠久久偷偷色综合0| 久久久久国产一级毛片高清版| 色婷婷综合久久久久中文字幕| 日韩人妻无码一区二区三区久久| 72种姿势欧美久久久久大黄蕉| 久久国产视屏| 久久久精品波多野结衣| 香蕉久久一区二区不卡无毒影院 | 久久精品国产亚洲AV嫖农村妇女| 国产精品久久久久久一区二区三区 | 色婷婷久久综合中文久久蜜桃av| 香蕉久久夜色精品国产尤物| 久久本道久久综合伊人| 久久国产精品免费一区| 久久精品国产一区二区三区| 精品久久国产一区二区三区香蕉| www.久久热.com|