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

            S.l.e!ep.¢%

            像打了激速一樣,以四倍的速度運(yùn)轉(zhuǎn),開心的工作
            簡單、開放、平等的公司文化;尊重個(gè)性、自由與個(gè)人價(jià)值;
            posts - 1098, comments - 335, trackbacks - 0, articles - 1
              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            較難的問題:<object.../>和new ActiveXObject() 為什么不一樣?

            樓主myy()2005-11-08 21:13:35 在 VC/MFC / ATL/ActiveX/COM 提問

            我寫了一個(gè)ocx,運(yùn)行在網(wǎng)頁內(nèi), ? 想在ocx中獲取當(dāng)前網(wǎng)頁的URL地址,代碼在網(wǎng)上找到了, ?
            ? 也能用,但是發(fā)現(xiàn)有個(gè)問題,在網(wǎng)頁中用<object.../>和new ? ActiveXObject() ? 兩種方式 ?
            ? 載入ocx是,后種方式總是出錯(cuò),請(qǐng)高手指點(diǎn)一下,不勝感激! ?
            ? ?
            ? 附代碼(BCB的代碼,AnsiString可看作VC的CString): ?
            ? ... ?
            ? ? ? AnsiString ? __fastcall ? TMyOcxImpl::GetPageURL(void) ?
            ? ? ? { ?
            ? ? ? ? ? AnsiString ? s(""); ?
            ? ? ? ? ? try ? { ?
            ? ? ? ? ? ? ? CComPtr<IOleContainer> ? iOct; ?
            ? ? ? ? ? ? ? OleCheck(m_spClientSite->GetContainer(&iOct)); ?
            ? ? ? ? ? ? ? CComQIPtr<IHTMLDocument2,&IID_IHTMLDocument2> ? iDoc(iOct); ?
            ? ? ? ? ? ? ? if(iDoc!=NULL) ?
            ? ? ? ? ? ? ? { ?
            ? ? ? ? ? ? ? ? ? CComBSTR ? url(""); ?
            ? ? ? ? ? ? ? ? ? OleCheck(iDoc->get_URL(&url)); ?
            ? ? ? ? ? ? ? ? ? s=AnsiString(url.Copy()); ?
            ? ? ? ? ? ? ? } ?
            ? ? ? ? ? } ?
            ? ? ? ? ? catch(...) ? { ?
            ? ? ? ? ? ? ? s=""; ?
            ? ? ? ? ? } ?
            ? ? ? ? ? return ? s; ?
            ? ? ? } ?
            ? 問題點(diǎn)數(shù):100、回復(fù)次數(shù):9Top

            1 樓myy() 回復(fù)于 2005-11-08 22:07:56 得分 0

            主要是這一句: ?
            ? ?
            ? OleCheck(m_spClientSite->GetContainer(&iOct)); ?
            ? ?
            ? 在Debug模式下會(huì)在 ? atlbase.h ? 內(nèi)產(chǎn)生一個(gè)斷言失敗。Top

            2 樓jiangsheng(蔣晟.Net[MVP]) 回復(fù)于 2005-11-09 02:44:58 得分 50

            ActiveX ? created ? by ? using ? <object> ? is ? hosted ? by ? the ? DHTML ? Document ? object, ? which ? may ? supports ? IHTMLDocument2. ?
            ? ActiveX ? created ? by ? using ? new ? ActiveXObject ? is ? hosted ? by ? the ? script ? engine. ?
            ? ?
            ? Top

            3 樓myy() 回復(fù)于 2005-11-09 12:03:52 得分 0

            蔣老大你好: ?
            ? 為什么 ? new ? ActiveXObject("Microsoft.XMLHttpRequest") ? 可以send時(shí)可以使用相對(duì)路徑呢? ?
            ? ?
            ? 我的ocx內(nèi)部在<object.../>情況時(shí),自動(dòng)獲取當(dāng)前網(wǎng)頁的URL,然后通過UrlCombine()來轉(zhuǎn)化的,不知道XMLHttpRequest如何弄的。Top

            4 樓myy() 回復(fù)于 2005-11-10 10:09:33 得分 0

            uppp...Top

            5 樓jiangsheng(蔣晟.Net[MVP]) 回復(fù)于 2005-11-10 13:58:00 得分 0

            因?yàn)閁RL是一樣的……Top

            6 樓myy() 回復(fù)于 2005-11-10 23:54:17 得分 0

            因?yàn)閁RL是一樣的…… ?
            ? ------------------------- ?
            ? 哪個(gè)跟哪個(gè)一樣?。坎幻靼?。 ?
            ? ?
            ? ?
            ? 頁面當(dāng)前完整URL是 ? http://aaa.bbb.ccc/ddd/eee/fff.jsp ?
            ? 用: ?
            ? ? ? var ? xobj=new ? ActiveXObject("Microsoft.XMLHttpRequest") ? ; ?
            ? ? ? xobj.send("../a.jsp"); ?
            ? 能正確的訪問到 ? http://aaa.bbb.ccc/ddd/eee/a.jsp ?
            ? ?
            ? 用: ?
            ? ? ? var ? myobj=new ? ActiveXObject("Myy.MyOcx") ? ; ?
            ? ? ? myobj.HttpGet("../a.jsp"); ?
            ? ?
            ? 因?yàn)閙yobj不能自動(dòng)獲取到頁面當(dāng)前完整URL,內(nèi)部不能用 ?
            ? UrlCombine()來合成 ?
            ? “http://aaa.bbb.ccc/ddd/eee/fff.jsp”和 ? “../a.jsp” ?
            ? 到 ?
            ? “http://aaa.bbb.ccc/ddd/eee/a.jsp” ?
            ? 除非我改方法,加個(gè)參數(shù): ?
            ? ? ? myobj.HttpGet(window.location.href,"../a.jsp"); ?
            ? ?
            ? 但這樣使用起來比較不方便啊。Top

            7 樓myy() 回復(fù)于 2005-11-11 00:03:45 得分 0

            蔣老大: ?
            ? ?
            ? 還記得這個(gè)問題嗎? ?
            ? ?
            ? ? “如何通過載入的ActiveX來在當(dāng)前IE進(jìn)程中創(chuàng)建一個(gè)自定義行為的“永久性”線程?” ?
            ? ? ? http://community.csdn.net/Expert/topic/4130/4130296.xml?temp=.5653192 ?
            ? ?
            ? 我后來終于找到了解決的辦法,其實(shí)很簡單,ocx ? 的主文件中有這個(gè)輸出函數(shù): ?
            ? ?
            ? STDAPI ? __export ? DllCanUnloadNow(void) ?
            ? { ?
            ? ? ? ? ? //return ? (_Module.GetLockCount()==0) ? ? ? S_OK ? : ? S_FALSE; ?
            ? ? ? ? ? return ? S_FALSE; ? // ? 為心跳線程,我野蠻地阻止了IE進(jìn)程卸載我的OCX ?
            ? } ?
            ? ?
            ? 總是返回 ? S_FALSE ? 這樣就OK了。 ?
            ? ?
            ? 謝謝您在回復(fù)中給了我一些提示。Top

            8 樓jiangsheng(蔣晟.Net[MVP]) 回復(fù)于 2005-11-11 02:58:09 得分 50

            surely ? you ? can ? pass ? the ? url ? or ? even ? the ? HTML ? window ? object ? (external.menuArguments) ? to ? the ? activex ? control, ? but ? you ? may ? also ? implement ? IObjectWithSite ? to ? get ? the ? IWebBrowser2 ? interface. ? If ? your ? control ? supports ? this ? interface, ? Internet ? Explorer ? will ? call ? the ? SetSite ? method ? with ? a ? pointer, ? which ? may ? be ? used ? to ? query ? the ? webbrowser ? service ? via ? its ? IServiceProvider ? interface.Top

            9 樓myy() 回復(fù)于 2005-11-11 15:27:29 得分 0

            呵呵,搞定了!就是通過實(shí)現(xiàn)IObjectWithSite接口做的,不過 ?
            ? <object.../>和new ? ActiveXObject() ? 兩種方式得分別用不同的方法 ?
            ? ?
            ? 前者是: ?
            ? 從 ? m_spClientSite!=NULL, ? ? 得到 ? IOleContainer ? ... ?
            ? ?
            ? 后者是: ?
            ? 從 ? m_spUnkSite!=NULL ? , ? 得到 ? IServiceProvider ? ,再Q(mào)ueryService到IWebBrowser2...

            久久精品国产99国产精品 | 国产AⅤ精品一区二区三区久久| 麻豆成人久久精品二区三区免费| 亚洲欧美成人综合久久久 | 久久精品草草草| 久久午夜无码鲁丝片午夜精品| 日本加勒比久久精品| 久久亚洲私人国产精品| 九九久久精品无码专区| 国产精品无码久久综合| 久久天天躁狠狠躁夜夜av浪潮 | 国产精品美女久久久久av爽| 香蕉久久影院| 国产91久久综合| 亚洲AV日韩AV永久无码久久| 久久久久这里只有精品 | 东方aⅴ免费观看久久av| 99久久久精品| 久久中文字幕人妻熟av女| 精品久久久久久中文字幕| 亚洲级αV无码毛片久久精品 | 亚洲国产精品无码久久久久久曰| 无码人妻久久久一区二区三区| 久久久久无码中| 久久国产综合精品五月天| 国产精品久久久久久久久| 欧洲精品久久久av无码电影| 亚洲国产精品成人久久蜜臀 | MM131亚洲国产美女久久| 久久精品国产亚洲AV蜜臀色欲| 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲 | 久久久无码精品午夜| 精品久久久久久无码人妻热| 国产激情久久久久影院小草 | 亚洲国产综合久久天堂| 欧美午夜A∨大片久久| 久久久WWW免费人成精品| 欧美粉嫩小泬久久久久久久| 亚洲午夜精品久久久久久浪潮| 国内精品久久久久影院网站 | 久久天天躁狠狠躁夜夜不卡|