您現在的位置是:電腦技術吧?>? 故障問題 ??>??接口文檔怎么用,什么是接口文檔??>??正文詳情

接口文檔怎么用,什么是接口文檔

戢仲舒2019-11-15 21:30:37 人圍觀
簡介接口文檔示例問題:在使用活動輔助功能SDK的過程中,我從窗口的句柄獲取ihtmldocument2指針。有沒有辦法從ihtmldocument2指針獲取iwebbrowse開發接口文檔

問題:  在使用Active Accessibility SDK的過程中,我從某個窗口的句柄來獲得IHTMLDocument2指針。

有沒有什么方法可以從IHTMLDocument2指針來獲得IWebBrowser2指針?我用QueryInterface在兩個接口(IHTMLDocument2 和 IWebBrowser2)上試過,但沒有成功。

我也用網景(Netscape)的 HTMLWindow2 指針試過從get_navigator獲取IOmNavigator *。

也以失敗告終。

請高手指點。

  解答:  這個問題通常是COM編程中存在的共性問題。

你有了窗口,文檔,或者瀏覽器,你明明知道可以通過這些已知數據來得到其它的信息,但往往在實際環境中一運行,QueryInterface總是給你送回一個肥大的NULL。

這個問題的答案實際上隱藏在神秘的IServiceProvider接口中,顧名思義,IServiceProvider的作用就是提供服務。

IServiceProvider是個非常棒的接口:它只有一個方法QueryService。

如果你會用ATL智能指針,就像下面這樣。

首先必須獲得IServiceProvider接口,  CComQIPtr isp = pIHTMLDocument2;  這行代碼實際上就是對文檔執行了一次 QueryInterface,以詢問IServiceProvider接口。

一旦具備了isp,你便可以象下面這樣獲得瀏覽器。

  CComQIPtr iwb2;  isp-QueryService(IID_IWebBrowserApp,IID_IWebBrowser2, (void**)iwb2);  如果你還是不明白上面所講東西,沒有關系,很正常。

COM編程的一個根本規則是:QueryInterface必須總是要返回所查詢對象的接口。

但是文檔不實現 IWebBrowser2 接口,它只知道如何獲得正在工作的對象。

文檔,瀏覽器和窗口都是獨立的對象。

通常IServiceProvider被用于多個單獨且相關的COM對象群來實現某種類型的服務。

QueryInterface詢問某個對象:你實現這個接口嗎?,而QueryService告訴某個服務提供者,不管什么對象實現這個接口都要告訴我。

使用QueryService返回的接口指針與所查詢的對象可能相同,也可能不相同。

如圖一所示。

所有對象都實現它們自己不同的接口并在內部存儲指向另一個對象的指針。

你必須用IServiceProvider接口來獲得特定接口的對象,不論它是哪一個對象實現的。

IServiceProvider::QueryService要追隨這些內部指針來獲取實現你所想要的接口對象。

  圖一 多個對象,一個IServiceProvider  從本質上講,IServiceProvider用于導航DHTML對象層次。

假設你正在寫一個ActiveX控件來導航這個對象模型。

你如何做呢?首先要像下面這樣查詢IOleClientSite來取得IServiceProvider:  CComQIPtr isp = pSite;  然后,一旦你具備了IServiceProvider,則可以用QueryService來從中查詢應用對象。

  CComQIPtr iwba;  isp-QueryService(IID_IWebBrowserApp, IID_IWebBrowserApp, (void **)iwba);  接下來你就可以導航這個對象層次了(應用對象在最頂層)。

如果你想要得到Web瀏覽器,那么與前面類似。

  CComQIPtr iwb2;  isp-QueryService(IID_IWebBrowserApp, IID_IWebBrowser2, (void **)iwb2));  在所有這些例子中,SID_SWebBrowserApp都是服務標示,但你也能常常見到將IID_IWebBrowserApp作為服務ID的代碼。

兩種用法都可以行得通,因為文件中有個宏定義:  #defines SID_SWebBrowserApp IID_IWebBrowserApp  但從編程的角度上講,SID_SWebBrowserApp在技術上更正確,并且對閱讀代碼的人來說也更清晰。

  此外,如果你有足夠的勇氣去實現像DHTML對象模型這類龐大的對象系統的話,你也要用到IServiceProvider接口......  關于這個問題的解答我也只能淺嘗輒止地說明到這個地步,再往深處走,我也蒙嚓嚓。

更深層次的探討請各位參見MSDN庫。

  由于個人水平所限,對解答中存在的錯誤與不詳之處,請各位弟兄海涵。

版權聲明:本文由 戢仲舒 整理編輯。

原標題:給你一個接口文檔怎么實現,怎么看接口文檔

轉載注明出處:http://www.dn9ww09s.icu/fault/12621.html

文章評論

    共有條評論來說兩句吧...

    用戶名:

    驗證碼:

作者推薦

  • win10最流暢的版本,win10哪個版本打游戲好

    win10最流暢的版本,win10哪個版本打游戲好 相關圖片win10企業g版好用嗎win10有四個版本,包括家庭版、專業版、企業版和教育版。有些用戶不知道在專業版和企業版之間選擇哪一個。讓我們看看win10企業版和專業版企業版的區別vs企業版與...

  • 框架的HTML標簽是,框架的HTML標簽是什么

    框架的HTML標簽是,框架的HTML標簽是什么 相關圖片內聯框架的html標簽是【框架基本概念】首先,讓我們來看看右邊的圖片。我用這張照片來解釋。這樣,可能會更清楚,好嗎!我們可以看到右邊的窗口被分成三個框架:1、2和3。每個幀...

  • 家長幫App,家長app

    家長幫App,家長app 相關圖片家長幫app下載近年來,孩子們頻繁、大規模地使用父母的手機進行游戲和直播消費的現象越來越普遍。蘋果也因為這種情況引入了家長控制功能。其中之一就是利用iPhone的家長控制功能...

  • T卡,T?1

    T卡,T?1 相關圖片6T對于加拿大,他們將于10月29日在美國發布一加6T手機。作為今年小龍845陣營的又一旗艦,其關注度不低。你最希望升級哪一個?現在有國外的電子商務平臺T 0...

  • 進階之路,進階之路什么意思

    進階之路,進階之路什么意思 相關圖片強者之路進階材料今天的面試設計師@LBE小生,畢業于江南大學,是最早的移動交互設計師之一。畢業后,他從互動設計師升為百度高級設計師、愛奇藝高級設計經理,現為LBE安全大師產...

  • Windows資源管理器停止工作,win7資源管理器老是停止工作

    Windows資源管理器停止工作,win7資源管理器老是停止工作 相關圖片win7右鍵資源管理器停止工作Windows資源管理器已停止工作,這是許多計算機用戶經常遇到的計算機問題之一。當他們遇到這個問題時,一些用戶不知道如何根據微軟官方的答案,windows資...

  • 怎么收集信息,信息收集

    怎么收集信息,信息收集 相關圖片搜集信息的渠道有哪些今天,雖然這篇文章是一篇老文章,但它的實用價值仍然很高。尤其是那些沒有良好組織習慣的學生,這篇文章一定會讓你大開眼界!作者是阿里巴巴的高級交互...

  • 現在蘋果6s換電池多少錢,蘋果保修期換電池多少錢

    現在蘋果6s換電池多少錢,蘋果保修期換電池多少錢 相關圖片蘋果電池壽命80%要換嗎很多人在手機上選擇蘋果,蘋果系統封閉穩定,性能也不錯。很多用戶可以從一個蘋果開始很長一段時間,通常手機還在使用,但電池不夠用。而且一直有一種說...

  • win鍵按了沒反應,win10按win鍵沒反應

    win鍵按了沒反應,win10按win鍵沒反應 相關圖片win鍵一直按著計算機鍵盤上的Win鍵是一種強大的輔助密鑰,它可以在與其他情況結合后進行調整。然而,當一些用戶按下win鍵時,他們沒有響應。我該怎么辦?一。鍵盤本身可能需要拆...

  • 圖庫攝影師,中國圖庫攝影師

    圖庫攝影師,中國圖庫攝影師 相關圖片中國圖庫簽約攝影師今天,一個新的安利畫廊網站被挑出來,因為它的所有照片都是由專業攝影師拍攝的。圖片的質量比一般的畫廊網站要高得多。這些圖片可以免費下載、使用和修改...

熱評文章

  • icloud鑰匙串打開不了,打開icloud鑰匙串

    icloud鑰匙串打開不了,打開icloud鑰匙串 相關圖片icloud鑰匙串要不要開啟現在你需要一個密碼才能登錄到每個平臺,以確保你的賬戶安全,但是密碼很簡單,賬戶不安全,密碼復雜且難以記住,所以icloud密鑰鏈可以使用什么是icloud密鑰...

  • 上下文菜單,pyqt5上下文菜單

    上下文菜單,pyqt5上下文菜單 相關圖片mac上下文菜單提問:第六期網絡雜志《風投知識庫》上有一篇文章。在VC6中,CHTMLVIEW用于在對話框控件中顯示HTML文件。許多讀者寫道他們非常喜歡這個功能。但它的優點是顯示候選項上...

  • steam錯誤代碼-100解決,steam錯誤代碼-21解決

    steam錯誤代碼-100解決,steam錯誤代碼-21解決 相關圖片steam錯誤代碼137很多人通過steam游戲平臺購買和下載國外游戲,但一些用戶在連接steam時出現錯誤代碼103。如何解決steam的103錯誤碼?一。打開蒸汽設定界面,選擇steam老是錯誤代碼,怎么回...

  • 設計師用APP,設計師經常看的app

    設計師用APP,設計師經常看的app 相關圖片設計師交流的app工欲善其事,必先利其器。今天,我們將為我們的設計師提供24款精選軟件。我們推薦來自大公司、捷步達康、ustwo、okfocus等團隊的頂尖設計師,看看他們通常使設計師必...

  • 努比亞X,努比亞X2

    努比亞X,努比亞X2 相關圖片努比亞root努比亞新旗艦車型努比亞x于10月31日正式上市。與其他全屏幕旗艦機型相比,努比亞X采用了不同的方案,即目前手機市場上有很多全面的屏幕實現方案,從劉海屏幕到升降式努...

  • Touch是什么意思,Touch

    Touch是什么意思,Touch 相關圖片蘋果touch是什么意思Force touch是3D touch的前身,是蘋果的一種觸摸傳感技術。它用于蘋果手表、新款MacBook和新款MacBook Pro。用戶使用武力touch是什么手機...

  • 智能多焦點老花眼鏡,智能

    智能多焦點老花眼鏡,智能 相關圖片今日網絡熱點作為一個新興產業,智能電視行業的用戶體驗知識匱乏。今天,請您與@Bu carrot 1992分享一些電視用戶體驗的實用設計經驗和基礎知識,他負責智能電視應用程序文件分享...

  • steam錯誤代碼-100解決,steam錯誤代碼-21解決

    steam錯誤代碼-100解決,steam錯誤代碼-21解決 相關圖片steam錯誤代碼137當你玩一些國外的游戲時,你通常需要使用游戲平臺steam。雖然國內使用不是很強大,但游戲資源相當豐富。可能是因為steam的服務器在國外,所以當用戶使用steasteam老是...

  • vbhtml,vb6解析html

    vbhtml,vb6解析html 相關圖片打開vbPrivate Sub Command1_Click()WebBrowser1.導航http://localhost/Timer1.Enabled=TrueEnvb net...

  • win7系統不兼容怎么辦,文件與windows7不兼容

    win7系統不兼容怎么辦,文件與windows7不兼容 相關圖片軟件與電腦系統不兼容當一些用戶安裝軟件或游戲時,他們將收到一條錯誤消息,說明此文件的版本與正在運行的Windows不兼容。在這種情況下,壓縮文件不兼容,或者安裝軟件不兼容。...

關注微信

变脸官网查询