如何在IE8 下調(diào)試BHO控件工具欄調(diào)試Tab進(jìn)程_第1頁(yè)
如何在IE8 下調(diào)試BHO控件工具欄調(diào)試Tab進(jìn)程_第2頁(yè)
如何在IE8 下調(diào)試BHO控件工具欄調(diào)試Tab進(jìn)程_第3頁(yè)
如何在IE8 下調(diào)試BHO控件工具欄調(diào)試Tab進(jìn)程_第4頁(yè)
如何在IE8 下調(diào)試BHO控件工具欄調(diào)試Tab進(jìn)程_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

IE8TabBHO/Tab進(jìn)程里面被加載,所以當(dāng)debuggerIEIE8的進(jìn)程模型結(jié)構(gòu)(IEBlog)BHO控件/Tab進(jìn)程。TabIETab進(jìn)程被創(chuàng)建的時(shí)候,系統(tǒng)自動(dòng)把調(diào)試器啟動(dòng)并且attach到新創(chuàng)建的進(jìn)程。接下來(lái)講解如何配置系統(tǒng)自動(dòng)調(diào)試:1)HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\ImageFileExecutionOptions下面創(chuàng)建一個(gè)iexplore.exe鍵。2)在iexplore.exe鍵里面創(chuàng)建一個(gè)字符串值(REG_SZ)"Debugger",并將內(nèi)容設(shè)置成調(diào)試器的路徑VisualStudio作為調(diào)試器,那么路徑如下(VisualStudioJIT調(diào)試器一般在system32目錄):"Debugger":C:\WINDOWS\system32\vsjitdebugger.exeWinDBGWinDBG.exe(WinDBGC:\Debuggers)"Debugger":C:\Debuggers\windbg.exeregedit的截圖,看起來(lái)更加直觀一些:VisualStudio設(shè)置:WinDBG調(diào)試IE8設(shè)置:) IE 編 程 精 選/bbs/printpage.asp?BoardID=6&ID=1002如何使用BHO定制你的InternetExplorer瀏覽器原文:微軟公司DinoEsposito編譯:朱先中原文出處:BrowserHelperObjects:TheBrowsertheWayYouWantIt

摘 自 :一、簡(jiǎn)介Web――Web瀏覽器控件轉(zhuǎn)變成一個(gè)功能齊全的瀏覽器如InternetInternetExplorer該多好?BHO(BrowserHelper,以下皆簡(jiǎn)稱BHO)正是用來(lái)實(shí)現(xiàn)此目的的。二、關(guān)于軟件定制――事情――但它還是長(zhǎng)時(shí)間以來(lái)的唯一的選擇。Win32API的到來(lái),進(jìn)程間子類(lèi)化不再被鼓勵(lì)使用并愈發(fā)變得困難起來(lái)。當(dāng)然,InternetExplorer瀏覽器和它的所要實(shí)現(xiàn)的。三、什么是BHO?從某種觀點(diǎn)看,InternetExplorer同普通的Win32程序沒(méi)有什么兩樣。借助于BHO,你可以寫(xiě)一個(gè)進(jìn)程內(nèi)COMBHO能夠探測(cè)到GoBack、GoForward、DocumentCompleteBHO能夠存取瀏BHO位間諜(注意這是微軟允許的合法工作。在進(jìn)一步了解BHO對(duì)象依托于瀏覽器主窗口。實(shí)際上,這意味著一旦一個(gè)瀏覽器窗口產(chǎn)生,一個(gè)新的BHO任何BHO對(duì)象與瀏覽器實(shí)例的生命周期是一致的BHO僅存在于InternetExplorer4.0及以后版本中。MicrosoftWindows?WindowsWindowsorWindows4.0操作系統(tǒng)的話,也就一塊運(yùn)行了活動(dòng)桌面外殼4.71,BHO也被Windows資源管理器所支持。BHO是一個(gè)COMInternetExplorer查詢那個(gè)鍵并把該鍵下的所有對(duì)象預(yù)以加載。InternetExplorer瀏覽器初始化這一對(duì)象并要求某一接口功能ExplorerIUnknown指針到BHO對(duì)象。見(jiàn)圖一:圖一ie瀏覽器如何裝入和初始化BHO對(duì)象,BHO場(chǎng)所(site)是用于實(shí)現(xiàn)通信的COM接口瀏覽器可能在注冊(cè)表中發(fā)現(xiàn)一系列的CLSID,并由此為每個(gè)CLSID建立一個(gè)進(jìn)程中實(shí)例。結(jié)InternetExplorer的COM特性,即使被裝入到它的進(jìn)程空間中于事(你的野心實(shí)現(xiàn))也不一定會(huì)有多大幫助。用另一說(shuō)法,BHO需要建立一個(gè)私有的基于COMBHO應(yīng)該實(shí)現(xiàn)一個(gè)稱為IObjectWithSite的接口。事實(shí)上,通過(guò)接口IobjectWithSite,InternetExplorer可以傳遞它的IUnknownBHO的接口,如IWebBrowser2、IDispatch和IConnectionPointContainer。另外一種分析BHO對(duì)象的途徑與InternetExplorer外殼擴(kuò)展有關(guān)。我們知道,一個(gè)WINDOWS外殼擴(kuò)展即是一個(gè)進(jìn)程內(nèi)的COMWindows資源管理器執(zhí)行某種――如顯示上下文菜單。通過(guò)建立一個(gè)實(shí)現(xiàn)幾個(gè)COM接口的COM模塊,Windows資源管理器能夠發(fā)現(xiàn)的方法注冊(cè)BHO――BHO仍有許多共同的特點(diǎn)。如下表一:表一外殼擴(kuò)展與BHO相近特性比較特性外殼擴(kuò)展BHO對(duì)象加載者Windows資源管理器InternetExplorer(和外殼4.17及以上版本的Windows資源管理器)擊活動(dòng)作在某類(lèi)文檔上的用戶動(dòng)作(即單擊右鍵)打開(kāi)瀏覽器窗口何時(shí)卸載參考計(jì)數(shù)達(dá)到0的幾秒之后導(dǎo)致它加載的窗口關(guān)閉時(shí)COM進(jìn)程中DLLCOMDLLCOMCOMBHO的注冊(cè)入口接口需求依賴于外殼擴(kuò)展的類(lèi)型IObjectWithSite如果你對(duì)SHELL擴(kuò)展編程有興趣的話,可以參考MSDNBHO的生存周期不僅僅為InternetExplorer4.71或者更高BHOWindows外殼版本號(hào)存于庫(kù)文件shell32.dll中。表二不同版本的Windows外殼對(duì)于BHO的支持情況外殼版本安裝的產(chǎn)品BHO的支持情況4.00WindowsNT4.0InternetExplorer4.0InternetExplorer4.0Windows9WindowsNT4.0帶InternetExplorer4.0和活動(dòng)桌面外殼更新InternetExplorer與Windows資源管理器Windows98InternetExplorer與Windows資源管理器5.00Windows2000InternetExplorer與Windows資源管理器BHO對(duì)象隨著瀏覽器主窗口的顯示而裝入,隨著瀏覽器主窗口的銷(xiāo)毀而缷載。如果你打開(kāi)多個(gè)瀏覽器窗口,多個(gè)BHO實(shí)例也一同產(chǎn)生。對(duì)象都被加載。舉例來(lái)說(shuō),即使你只是想要見(jiàn)到HTMLexplorer.exe或iexplore.exeBHO"Openeachfolderinitsown對(duì)每一個(gè)文件夾以一個(gè)獨(dú)立窗口打開(kāi)BHO對(duì)象都要被加載。見(jiàn)圖二。圖二經(jīng)過(guò)這樣設(shè)置,你每次打開(kāi)一個(gè)文件夾時(shí),執(zhí)行一個(gè)獨(dú)立的explorer.exe實(shí)例,并裝入已注冊(cè)的BHO對(duì)象。""Windows資源管理器視圖是單個(gè)的還是雙視圖形式。InternetExploreriexplore.exe瀏InternetExplorerInternetExplorer每一個(gè)窗口在一個(gè)新的線程中被復(fù)制而不是創(chuàng)建一個(gè)新的進(jìn)程,因此也就不需要重新載入BHO對(duì)象。BHO最有趣的地方是,它是極度動(dòng)態(tài)的。每次WindowsInternetExplorer打開(kāi),裝載器從注冊(cè)表中讀取已安裝的BHOCLSID然后處理它們。如果你在打開(kāi)的瀏覽器多個(gè)實(shí)例中間編輯注冊(cè)表的話多個(gè)不同的BHO以把它內(nèi)嵌在一個(gè)VisualBasicMFCInternetExplorer的強(qiáng)大的功能并且加上你想要的盡可能多的插件。五、關(guān)于IObjectWithSite接口即是一個(gè)DLL,它能夠依附于InternetExplorer建的實(shí)例,在某些情況下也適用于Windows資源管理器。一般地,一個(gè)場(chǎng)所是一個(gè)中間對(duì)象,它位于容器對(duì)象與被包容對(duì)象之間。通過(guò)它,IoleClientSite,被包容對(duì)象要實(shí)現(xiàn)接口IOleObject。通過(guò)調(diào)用IOleObject容器對(duì)象使得被包容對(duì)象清楚地了解其HOST的環(huán)境。一旦容器對(duì)象成為InternetExplorer(或是具有WEB能力的Windows資源管理器容對(duì)象只需實(shí)現(xiàn)一個(gè)輕型的IObjectWithSite接口。該接口提供了以下方法:表三IObjectWithSite定義方法描述HRESULTSetSite(IUnknown*pUnkSite)接收ie瀏覽器的IUnknown.HRESULTGetSite(REFIIDriidvoid**ppvSite)從通過(guò)SetSite()并返回指定的接口,典型實(shí)現(xiàn)是查詢前面保存的接口指針以進(jìn)一步取得指定的接口。BHO一個(gè)函數(shù)時(shí)返回E_NOTIMPL行正確地編碼。六、構(gòu)造自己的BHO對(duì)象一個(gè)BHO對(duì)象就是一個(gè)進(jìn)程中服務(wù)器ATLATLIObjectWithSite接口的足夠好ATLCOM向?qū)П镜刂С值囊讯x好的對(duì)象類(lèi)型當(dāng)中InternetExplorerBHOATLInternetExplorer上是一個(gè)簡(jiǎn)單對(duì)象也就是說(shuō),是一個(gè)支持IUnknown和自注冊(cè),還有接口IObjectWithSiteCOM服務(wù)器。如果你在ATL的類(lèi)CViewSource,你將從向?qū)е械玫较铝写a:class ATL_NO_VTABLE CViewSource : publicCComObjectRootEx<CComSingleThreadModel>,publicCComCoClass<CViewSource,&CLSID_ViewSource>, public IObjectWithSiteImpl<CViewSource>, publicIDispatchImpl<IViewSource&IID_IViewSource&LIBID_HTMLEDITLib>向?qū)б呀?jīng)使類(lèi)從接口IObjectWithSiteImpl繼承,這是一個(gè)ATL模板類(lèi),它提供了接口IObjectWithSite的基本實(shí)現(xiàn)。一般情況下,沒(méi)有必要重載成員函數(shù)GetSite()。取而代之的SetSite()ATL實(shí)際上僅僅把一個(gè)IUnknown接口指針存儲(chǔ)在成員變量m_spUnkSite中。BHOBHO對(duì)象將依附于InternetHTMLHTML代碼的任何改動(dòng)立即反映在瀏覽器中。HTMLInternetExplorer共享整個(gè)桌面空間,見(jiàn)圖三。圖三BHO對(duì)象在使用中。它依附于InternetExplorer,并顯示一個(gè)窗口來(lái)顯示當(dāng)前正瀏覽的網(wǎng)頁(yè)源碼。還允許你源碼進(jìn)行修改。InternetExplorer的瀏覽機(jī)制,其實(shí)它只不過(guò)是WebBrowser件的一個(gè)實(shí)例而已。這個(gè)例子可以分解為以下五步來(lái)實(shí)現(xiàn):探測(cè)誰(shuí)在裝入這個(gè)對(duì)象,是InternetExplorer還是Windows獲取接口IWebBrowser2以實(shí)現(xiàn)Web瀏覽器對(duì)象;捕捉Web瀏覽器的特定事件;存取當(dāng)前文檔對(duì)象,確定它是一份HTML管理對(duì)話框窗口以實(shí)現(xiàn)HTML源碼的顯示;DllMain()SetSite()WebBrowser置。請(qǐng)?jiān)敿?xì)分析以下步驟。七、探測(cè)誰(shuí)在調(diào)用這個(gè)對(duì)象BHOInternetExplorerWindows資源管理器(版本4.71或者更高)所加載。所以我專(zhuān)門(mén)設(shè)計(jì)了一個(gè)BHOHTML網(wǎng)頁(yè),因此這個(gè)BHO與資源管理器毫無(wú)關(guān)系。如果一個(gè)Dll不想被調(diào)用者一起加載,只需在DllMain()中實(shí)現(xiàn)了探明誰(shuí)在調(diào)用該對(duì)象后返回FALSE即可。參看下面代碼:if(dwReason==DLL_PROCESS_ATTACH){TCHAR返回調(diào)用者模塊的名稱,第一個(gè)參數(shù)應(yīng)為NULL,詳見(jiàn)msdn。GetModuleFileName(NULL,pszLoaderMAX_PATH);_tcslwr(pszLoader);if_T("explorer.exe")))return一旦知道了當(dāng)前進(jìn)程是Windows資源管理器,可立即退出。DLLInternetExplorer的執(zhí)行文件個(gè)受害者就是regsvr32.exe(該程序用于自動(dòng)注冊(cè)對(duì)象。if(!_tcsstr(pszLoader_T("iexplore.exe")))你不能夠再次注冊(cè)該DLLregsvr32.exe試圖裝入DLL以激活函數(shù)DllRegisterServer()八、與Web瀏覽器取得聯(lián)系SetSite()方法正是BHO允許發(fā)生一次的任務(wù)。當(dāng)你用InternetExplorer打開(kāi)一個(gè)URL時(shí),你應(yīng)該等待一系列的事IWebBrowser2(WebBrowser對(duì)象面用ATL靈敏指針加以封裝:CComQIPtr< IWebBrowser2 , m_spWebBrowser2;CComQIPtr<IConnectionPointContainer ,&IID_IConnectionPointContainer>源代碼部分如下所示:HRESULTCViewSource::SetSite(IUnknown*pUnkSite){//檢索并存儲(chǔ)IWebBrowser2指針m_spWebBrowser2=pUnkSite;if(m_spWebBrowser2==NULL)returnE_INVALIDARG;//檢索并存儲(chǔ)IConnectionPointerContainer指針m_spCPC=m_spWebBrowser2;if(m_spCPC==NULL)returnE_POINTER;檢索并存儲(chǔ)瀏覽器的句HWND.并且安裝一個(gè)鍵盤(pán)鉤子備后用RetrieveBrowserWindow();//為接受事件通知returnConnect();}IWebBrowser2也可以在事件剛剛發(fā)生時(shí)查詢IConnectionPointContainer。這里,SetSite()檢索了瀏覽器的句柄HWNHWND用于后面InternetExplorer窗口的移動(dòng)或尺寸調(diào)整。這里的鉤子用來(lái)實(shí)現(xiàn)熱鍵功能,用戶可以按動(dòng)熱鍵來(lái)顯示/隱藏代碼窗口。九、從InternetExplorer瀏覽器取得事件當(dāng)你導(dǎo)向一個(gè)新的URL時(shí),瀏覽器最需要完成的是兩種事件:下載文檔并為之準(zhǔn)備HOST環(huán)境。也就是說(shuō),它必須初始化某對(duì)象并使該對(duì)象從外部可以利用。針對(duì)不同的文檔類(lèi)型或者裝入一個(gè)已注冊(cè)的MicrosoftActiveX?服務(wù)器來(lái)處理該文(如Word對(duì).doc文件的處理)或者初始化一些內(nèi)部組件來(lái)分析文檔內(nèi)容并生成和顯示該文檔。對(duì)于HTML網(wǎng)頁(yè)就是這樣,其內(nèi)容由于DHTML 對(duì)象作用而變得可用。當(dāng)文檔全部下載結(jié)束,DownloadComplete事件被激活這并不是說(shuō)這樣利用對(duì)象模型就可以安全地管理文檔的內(nèi)容了。事實(shí)上,DocumentComplete事件僅指明一切已經(jīng)結(jié)束,文檔已準(zhǔn)備好了(注意DocumentComplete事件僅在你第一次存取URL時(shí)到達(dá),如果你執(zhí)行了刷新動(dòng)作,你僅僅收到一個(gè)DocumentComplete事件)。BHOIConnectionPointIDispatch指針來(lái)調(diào)用FindConnectionPoint――向連接點(diǎn)對(duì)象(正是通過(guò)這個(gè)連接點(diǎn)對(duì)象來(lái)取得要求的外向接口,此時(shí)是DIID_DWebBrowserEvent。下列代碼顯示了連接點(diǎn)的發(fā)生情況:HRESULTCViewSource::Connect(void){HRESULThr;CComPtr<IConnectionPoint>spCP;//為Web瀏覽器事件而接收(receive)連接點(diǎn)hr=m_spCPC->FindConnectionPoint(DIID_DWebBrowserEvent2&spCP);ifreturnhr;//IDispatch接口上的相應(yīng)的函數(shù)。hr=spCP->Advise(reinterpret_cast<IDispatch*>(this),&m_dwCookie);returnhr;通過(guò)調(diào)用接口IConnectionPointAdvise()BHO告訴瀏覽器它對(duì)它產(chǎn)生的事件很感興趣。由于COM事件處理機(jī)制,所有這些意味著B(niǎo)HO把IDispatch接口指針提供給瀏覽器。瀏覽器將回調(diào)IDispatchInvoke()方法,以事件ID值作為第一參數(shù):HRESULTCViewSource::Invoke(DISPIDdispidMember,REFIIDriid,LCIDlcid,WORDDISPPARAMS*VARIANT*EXCEPINFO*pExcepInfo,UINT*puArgErr){if(dispidMember==DISPID_DOCUMENTCOMPLETE){OnDocumentComplete();m_bDocumentCompleted=true;}:}切記,當(dāng)事件不再需要時(shí),應(yīng)該使之與瀏覽器分離。如果你忘記了做這件事情,BHO對(duì)象將被鎖定,即使在你關(guān)閉瀏覽器窗口之后。很明顯,實(shí)現(xiàn)分離的最佳時(shí)機(jī)是收到事件OnQuit時(shí)。十、存取文檔對(duì)象BHO已經(jīng)有一個(gè)參照指向InternetExplorerWeb器控件以接收所有它產(chǎn)生的事件。當(dāng)網(wǎng)頁(yè)被全部下載并正確初始化后,我們就可以通過(guò)DHTMLWeb瀏覽器的文檔屬性返回一個(gè)指向文檔對(duì)象的IDispatch接口的指針:CComPtr<IDispatch> pDisp;HRESULT hr =m_spWebBrowser2->get_Document(&pDisp);get_Document()方法取得的僅僅是一個(gè)接IDispatch指針背后存在一個(gè)HTMLVB話,可以用下面代碼:DimdocAsObjectSetdoc=WebBrowser1.DocumentIfTypeName(doc)="HTMLDocument"Then\'\'獲取文檔內(nèi)容并予以顯示Else\'\'DisabledisplaydialogEndIfget_Document()IDispatchInternetExplorerHTMLActiveX文檔容器。這樣一來(lái),難以保證當(dāng)前瀏覽對(duì)象就是一個(gè)HTML――IDispatch指針真正指向一個(gè)HTMLIHTMLDocument2接口一定成功。IHTMLDocument2接口包裝了DHTML對(duì)象模型用來(lái)展現(xiàn)HTML碼實(shí)現(xiàn)這些功能:CComPtr<IDispatch> pDisp;HRESULT hr =m_spWebBrowser2->get_Document(&pDisp);CComQIPtr<IHTMLDocument2,&IID_IHTMLDocument2>spHTML;spHTML=pDisp;if(spHTML){//顯示else//disabletheCodeWindowcontrols}如果IHTMLDocument2spHTML指針將是NULL。HTML頁(yè)把它所有的內(nèi)容封裝在標(biāo)簽<BODY>中,DHTML對(duì)象模型要求你取得一個(gè)指向Body對(duì)象的指針:CComPtr<IHTMLElement>m_pBody;hr=spHTML->get_body(&m_pBody);奇怪的是,DHTML<BODY><HEAD>。其內(nèi)容被處理并存HTML原始文件中提取這部分的RAW部分取得的內(nèi)容足夠了<BODY>…<間的HTML代碼部分,可以把outerHTML屬性內(nèi)容讀取到一個(gè)BSTR變量中:BSTRbstrHTMLText;hr=m_pBody->get_outerHTML(&bstrHTMLText);UNICODE至ANSI轉(zhuǎn)化和設(shè)置編輯框控件的問(wèn)題。下面代碼實(shí)現(xiàn)這些功能:HRESULT CViewSource::GetDocumentContent(){ USES_CONVERSION; // 獲取WebBrowser 的文檔對(duì)象 CComPtr<IDispatch> pDisp; HRESULT hr =m_spWebBrowser2->get_Document(&pDisp);if(FAILED(hr))returnhr;//確保我們?nèi)〉玫氖且粋€(gè)IHTMLDocument2接口指針//讓我們查詢一下IHTMLDocument2接口(使用靈敏指針)CComQIPtr<IHTMLDocument2,&IID_IHTMLDocument2>spHTML;spHTML=pDisp; // 抽取文檔源代碼 if (spHTML) { // 取得BODY 對(duì)象 hr =spHTML->get_body(&m_pBody);if(FAILED(hr))returnhr;//取得HTML文本BSTRbstrHTMLText;hr=m_pBody->get_outerHTML(&bstrHTMLText);if(FAILED(hr))return//進(jìn)行文本的Unicode到ANSI的轉(zhuǎn)換LPTSTRpsz=TCHAR[SysStringLen(bstrHTMLText)];,OLE2T(bstrHTMLText));//相應(yīng)的調(diào)整HWNDhwnd=m_dlgCode.GetDlgItem(IDC_TEXT);EnableWindow(hwnd,true);hwnd=m_dlgCode.GetDlgItem(IDC_APPLY);true);//設(shè)置代碼窗口中的文本m_dlgCode.SetDlgItemText(IDC_TEXT,psz);delete[]psz;}else//文檔不是一個(gè)HTML頁(yè){m_dlgCode.SetDlgItemText(IDC_TEXT,"");HWNDhwnd=m_dlgCode.GetDlgItem(IDC_TEXT); EnableWindow(hwnd , false); hwnd =m_dlgCode.GetDlgItem(IDC_APPLY);EnableWindow(hwnd,false);}returnS_OK;}因?yàn)槲乙\(yùn)行這段代碼來(lái)響應(yīng)DocumentComplete事件通知,每個(gè)新的頁(yè)自動(dòng)地而且敏捷被處理DHTML對(duì)象模型使你能夠隨意修改網(wǎng)頁(yè)的結(jié)構(gòu),但這一變化在按F5刷新后全部復(fù)原。你還要處理一下DownloadComplete 事件以刷新代碼窗口(注意,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論