青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

牽著老婆滿街逛

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

vc中調(diào)用Com組件的方法詳解

轉(zhuǎn)載自:網(wǎng)絡(luò),來源未知,如有知曉者請告知我。


需求:
1.創(chuàng)建myCom.dll,該COM只有一個組件,兩個接口:
   IGetRes--方法Hello(),
   IGetResEx--方法HelloEx()

2.在工程中導(dǎo)入組件或類型庫
 #import "組件所在目錄myCom.dll" no_namespace

   #import "類型庫所在目錄myCom.tlb"
   
using namespace MYCOM;


方法一:
   CoInitialize(NULL);
   CLSID clsid;
   CLSIDFromProgID(OLESTR(
"myCom.GetRes"),&clsid);
   CComPtr
<IGetRes> pGetRes;//智能指針
   pGetRes.CoCreateInstance(clsid);
   pGetRes
->Hello();
   pGetRes.Release();
//小心哦!!請看最后的“注意”
   CoUninitialize();

方法二:
   CoInitialize(NULL);
   CLSID clsid;
   HRESULT hr
=CLSIDFromProgID(OLESTR("myCom.GetRes"),&clsid);
   IGetRes 
*ptr;
   hr
=CoCreateInstance(clsid,NULL,CLSCTX_INPROC_SERVER,
                 __uuidof(IGetRes),(LPVOID
*)&ptr);
   ptr
->Hello();
   CoUninitialize();

方法三:
CoInitialize(NULL);
   HRESULT hr;
   CLSID clsid;
   hr
=CLSIDFromProgID(OLESTR("myCom.GetRes"),&clsid);
   IGetRes
* ptr;
   IGetResEx
* ptrEx;
   
//使用CoCreateClassObject創(chuàng)建一個組件(特別是mutilThreads)的多個對象的
     時(shí)候,效率更高.
   IClassFactory
* p_classfactory;
   hr
=CoGetClassObject(clsid,CLSCTX_INPROC_SERVER,
                       NULL,IID_IClassFactory, 
                       (LPVOID
*)&p_classfactory);
   p_classfactory
->CreateInstance(NULL,__uuidof(IGetRes),
                                          (LPVOID
*)&ptr);
   p_classfactory
->CreateInstance(NULL,__uuidof(IGetResEx),
                                          (LPVOID
*)&ptrEx);
   ptr
->Hello();
   ptrEx
->HelloEx();
   CoUninitialize();

方法四:
直接從dll中得到DllGetClassObject,接著生成類對象及類實(shí)例(這方法可以
使組件不用在注冊表里注冊,這是最原始的方法,但這樣做沒什么意義,至少失去了COM
對用戶的透明性),不推薦使用.
typedef HRESULT (__stdcall * pfnHello)(REFCLSID,REFIID,void**);
   pfnHello fnHello
= NULL;
   HINSTANCE hdllInst 
= LoadLibrary("組件所在目錄myCom.dll");
   fnHello
=(pfnHello)GetProcAddress(hdllInst,"DllGetClassObject");
   
if (fnHello != 0)
   
{
   IClassFactory
* pcf = NULL;
   HRESULT hr
=(fnHello)(CLSID_GetRes,IID_IClassFactory,(void**)&pcf);
   
if (SUCCEEDED(hr) && (pcf != NULL))
   
{
   IGetRes
* pGetRes = NULL;
   hr 
= pcf->CreateInstance(NULL, IID_IFoo, (void**)&pGetRes);
   
if (SUCCEEDED(hr)   && (pFoo != NULL))
   
{
   pGetRes
->Hello();
   pGetRes
->Release();
   }

   pcf
->Release();
   }

   }
 
   FreeLibrary(hdllInst);

方法五:
通過ClassWizard利用類型庫生成包裝類,不過前提是com組件的接口必須是派
生自IDispatch,具體方法:
    調(diào)出添加類向?qū)?.NET中),選擇類型庫中MFC類,打開,選擇"文件",選擇
"myCom.dll"或"myCom.tlb",接下來會出來該myCom中的所有接口,選擇你想
生成的接口包裝類后,向?qū)詣由上鄳?yīng)的.h文件.這樣你就可以在你的MFC中
像使用普通類那樣使用組件了.(CreateDispatch("myCom.GetRes") 中的參數(shù)就是ProgID通過Clsid在注冊表中可以查詢的到)
CoInitialize(NULL);
   CGetRes getRest;
   
if (getRest.CreateDispatch("myCom.GetRes"!= 0)
   
{
   getRest.Hello();
   getRest.ReleaseDispatch();
   }

   CoUninitialize();


注意:
COM中的智能指針實(shí)際上是重載了->的類,目的是為了簡化引用記數(shù),幾不需要程序
員顯示的調(diào)用AddRef()和Release(),但是為什么我們在Method 1中
pGetRes.Release(),問題在與,我們的智能指針pGetRes生命周期的結(jié)束是在
CoUninitialize()之后,CoInitialize所開的套間在CoUninitialize()后已經(jīng)被
關(guān)閉,而pGetRes此時(shí)發(fā)生析構(gòu),導(dǎo)致了程序的崩潰,解決這個問題的另一個方法是
CoInitialize(NULL);
   CLSID clsid;
   CLSIDFromProgID(OLESTR(
"myCom.GetRes"),&clsid);
   
{
   CComPtr
<IGetRes> pGetRes;//智能指針
   pGetRes.CoCreateInstance(clsid);
   pGetRes
->Hello();
   }

   CoUninitialize();

以上就是COM的5中方法,當(dāng)然具體怎么使用還是在于程序的環(huán)境,加以琢磨....

posted on 2009-04-17 15:08 楊粼波 閱讀(3795) 評論(2)  編輯 收藏 引用

評論

# re: vc中調(diào)用Com組件的方法詳解 2009-04-18 10:43 99書城

愿和貴站博客交換鏈接
鏈接做好了 審核一下哦~~
博客名稱: 99書城
博客地址: http://www.xd920.cn/  回復(fù)  更多評論   

# re: vc中調(diào)用Com組件的方法詳解[未登錄] 2009-07-17 14:35 Jans2002

總結(jié)的很好啊  回復(fù)  更多評論   


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久精品视频亚洲| 欧美成人午夜激情在线| 亚洲欧美日韩精品久久久| 亚洲一区二区av电影| 亚洲精品一区二区在线| 亚洲欧美在线aaa| 亚洲第一福利社区| 午夜国产精品视频免费体验区| 欧美日韩一区在线播放| 亚洲影音一区| 欧美亚洲一区二区在线观看| 国产精品男女猛烈高潮激情| 亚洲一区二区三区在线| 亚洲精品少妇30p| 国产精品超碰97尤物18| 亚洲欧美成人网| 欧美一区2区视频在线观看 | 在线国产精品播放| 久久成人18免费网站| 欧美亚州一区二区三区| 欧美日韩在线观看一区二区| 欧美色视频日本高清在线观看| 亚洲精品久久久蜜桃| 亚洲精品视频在线观看网站 | 亚洲国产精品一区二区久| 宅男精品视频| 日韩视频不卡中文| 亚洲欧美日韩在线观看a三区| 欧美高清视频www夜色资源网| 欧美日韩高清不卡| 亚洲视频碰碰| 久久在精品线影院精品国产| 亚洲午夜在线| 国产欧美日韩不卡| 欧美制服丝袜| 欧美有码在线观看视频| 黑人巨大精品欧美一区二区小视频| 久久精品99国产精品日本| 亚洲韩国日本中文字幕| 久久天堂成人| 亚洲精品视频在线观看免费| 久久免费视频在线| 亚洲精品久久久久中文字幕欢迎你| 亚洲成人影音| 欧美激情2020午夜免费观看| 欧美日韩综合另类| 久久免费偷拍视频| 久久五月天婷婷| 亚洲午夜女主播在线直播| 久久经典综合| 亚洲一区二区成人在线观看| 黄色免费成人| 美女精品国产| 国产精品久久久久久久久久久久久 | 狂野欧美激情性xxxx| 欧美成人a∨高清免费观看| 欧美电影资源| 亚洲茄子视频| 欧美亚洲一区三区| 亚洲综合色激情五月| 一区二区三区高清在线| 亚洲午夜精品一区二区| 亚洲国产精品www| 国产精品视频一区二区三区| 亚洲国产日韩综合一区| 一区二区三区四区精品| 欧美一区二区三区男人的天堂| 欧美福利视频一区| 欧美特黄一级大片| 浪潮色综合久久天堂| 欧美精品麻豆| 久久久综合网| 国产精品v欧美精品v日本精品动漫| 久久久欧美一区二区| 一区二区三区回区在观看免费视频| 一本一本久久a久久精品综合妖精| 亚洲精品国产精品乱码不99 | 久久精品中文| 欧美日韩综合一区| 91久久精品一区二区三区| 亚洲大片在线| 欧美黄色aaaa| 日韩一区二区久久| 久久久久久亚洲精品中文字幕| 在线观看中文字幕亚洲| 欧美色图一区二区三区| 亚洲一区二区少妇| 欧美成人一品| 日韩一级在线观看| 日韩网站免费观看| 国产欧美日韩三区| 欧美精品一区在线播放| 亚洲一区二区免费看| 另类成人小视频在线| 黄色成人精品网站| 欧美国产视频在线| 欧美三区在线| 亚洲影院色在线观看免费| 欧美一区=区| 欧美午夜片在线观看| 久久久久在线观看| 国产精品久久777777毛茸茸| 亚洲一本视频| 亚洲免费大片| 欧美gay视频| 一区二区三区国产精品| 欧美电影打屁股sp| 国产伦精品一区二区三区免费 | 国产欧美日韩免费看aⅴ视频| 亚洲每日在线| 亚洲图片欧洲图片av| 国产欧美 在线欧美| 亚洲制服少妇| 亚洲第一在线综合网站| 欧美自拍偷拍午夜视频| 一区二区三区鲁丝不卡| 亚洲精品久久久久久一区二区| 国产精品成人一区二区网站软件| 久久精品亚洲乱码伦伦中文| 亚洲欧美美女| 一区二区三区不卡视频在线观看| 91久久精品一区二区三区| 亚洲精品日日夜夜| 久久精品观看| 久久综合电影| 欧美午夜精品理论片a级大开眼界| 欧美绝品在线观看成人午夜影视| 亚洲一区二区三区免费观看 | 久久伊人亚洲| 欧美aⅴ一区二区三区视频| 亚洲精品美女91| 久久久久久婷| 国产精品久久久爽爽爽麻豆色哟哟| 国产日韩欧美91| 在线观看中文字幕不卡| 午夜精品久久久久久| 美女福利精品视频| 亚洲一区激情| 亚洲免费在线| 亚洲国产精品久久久久| 麻豆成人在线观看| 日韩视频永久免费观看| 国产亚洲一级| 亚洲中无吗在线| 欧美电影在线观看| 在线精品亚洲一区二区| 欧美日韩1区2区| 亚洲伦伦在线| 日韩一级黄色大片| 激情亚洲网站| 免费在线看成人av| 亚洲人午夜精品免费| 国产精品午夜在线| 韩国久久久久| 亚洲高清在线观看一区| 亚洲美女尤物影院| 亚洲男女自偷自拍| 另类尿喷潮videofree| 欧美顶级少妇做爰| 亚洲清纯自拍| 久久精品国产第一区二区三区| 午夜视频一区| 另类酷文…触手系列精品集v1小说| 欧美岛国在线观看| 国产亚洲福利| 亚洲人在线视频| 久久爱www.| 亚洲精选一区二区| 免费成人黄色| 国产精品你懂的在线| 亚洲欧美电影院| 久久久久综合网| 亚洲综合999| 欧美成人激情在线| 午夜亚洲视频| 久久人人爽国产| 欧美激情91| 国产精品欧美久久久久无广告| 日韩视频在线观看国产| 一本色道久久综合亚洲精品小说| 久久国产婷婷国产香蕉| 久久免费高清视频| 欧美成人a视频| 欧美有码在线视频| 国产精品青草久久久久福利99| 免费在线国产精品| av成人免费| 欧美一区二区在线免费观看| 欧美特黄视频| 久久精品国产亚洲a| 亚洲精品乱码久久久久久久久| 亚洲宅男天堂在线观看无病毒| 亚洲性av在线| 亚洲成在人线av| 国产精品专区h在线观看| 在线亚洲成人| 亚洲第一在线视频| 欧美成人午夜激情在线| 久久国产日本精品| 亚洲国产成人在线|