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

牽著老婆滿街逛

嚴(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ò),來源未知,如有知曉者請(qǐng)告知我。


需求:
1.創(chuàng)建myCom.dll,該COM只有一個(gè)組件,兩個(gè)接口:
   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();
//小心哦!!請(qǐng)看最后的“注意”
   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)建一個(gè)組件(特別是mutilThreads)的多個(gè)對(duì)象的
     時(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,接著生成類對(duì)象及類實(shí)例(這方法可以
使組件不用在注冊(cè)表里注冊(cè),這是最原始的方法,但這樣做沒什么意義,至少失去了COM
對(duì)用戶的透明性),不推薦使用.
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",接下來會(huì)出來該myCom中的所有接口,選擇你想
生成的接口包裝類后,向?qū)?huì)自動(dòng)生成相應(yīng)的.h文件.這樣你就可以在你的MFC中
像使用普通類那樣使用組件了.(CreateDispatch("myCom.GetRes") 中的參數(shù)就是ProgID通過Clsid在注冊(cè)表中可以查詢的到)
CoInitialize(NULL);
   CGetRes getRest;
   
if (getRest.CreateDispatch("myCom.GetRes"!= 0)
   
{
   getRest.Hello();
   getRest.ReleaseDispatch();
   }

   CoUninitialize();


注意:
COM中的智能指針實(shí)際上是重載了->的類,目的是為了簡化引用記數(shù),幾不需要程序
員顯示的調(diào)用AddRef()和Release(),但是為什么我們?cè)贛ethod 1中
pGetRes.Release(),問題在與,我們的智能指針pGetRes生命周期的結(jié)束是在
CoUninitialize()之后,CoInitialize所開的套間在CoUninitialize()后已經(jīng)被
關(guān)閉,而pGetRes此時(shí)發(fā)生析構(gòu),導(dǎo)致了程序的崩潰,解決這個(gè)問題的另一個(gè)方法是
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 楊粼波 閱讀(3791) 評(píng)論(2)  編輯 收藏 引用

評(píng)論

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

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

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

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


只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(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>
            国产欧美一区二区精品忘忧草 | 国产综合久久久久久鬼色| 欧美一区激情| 亚洲另类自拍| 美女露胸一区二区三区| 亚洲一区二区精品视频| 欧美日韩在线大尺度| 欧美日韩亚洲一区二区三区四区| 国产精品99久久久久久久女警 | 亚洲大片在线| 国产精品日本一区二区| 午夜精品成人在线| 最近中文字幕mv在线一区二区三区四区| 亚洲欧美三级在线| 91久久精品一区二区别| 黄色成人在线网址| 一区在线观看| 欧美亚一区二区| 欧美视频1区| 亚洲人成高清| 91久久午夜| 亚洲国产精品成人综合色在线婷婷| 亚洲视频在线视频| 午夜精品影院| 日韩午夜黄色| 性欧美video另类hd性玩具| 亚洲欧美日韩在线不卡| 久久成人羞羞网站| 一区二区免费在线播放| 在线综合亚洲欧美在线视频| 尤物九九久久国产精品的特点| 好吊日精品视频| 亚洲看片网站| 久久精品99国产精品酒店日本| 农夫在线精品视频免费观看| 亚洲国产视频一区| 久久成人免费| 国产免费成人av| 99亚洲一区二区| 欧美激情欧美激情在线五月| 午夜一区二区三区不卡视频| 欧美福利视频在线| 国产婷婷色一区二区三区在线 | 欧美亚洲一区二区在线| 另类天堂av| 亚洲一区二区免费在线| 麻豆成人综合网| 国产一区视频观看| 欧美不卡在线视频| 欧美日韩精品一本二本三本| 欧美在线免费看| 久热国产精品| 欧美调教vk| 亚洲欧美综合精品久久成人| 性久久久久久久久久久久| 国内自拍视频一区二区三区 | 亚洲高清视频在线| 91久久线看在观草草青青| 欧美久久电影| 欧美电影在线免费观看网站| 欧美午夜在线视频| 蜜乳av另类精品一区二区| 国产精品日韩在线观看| 亚洲欧洲一区二区在线播放| 国产精品久久久爽爽爽麻豆色哟哟| 久久精品久久99精品久久| 欧美日韩极品在线观看一区| 免费观看久久久4p| 国产色综合久久| 性感少妇一区| 欧美在线视频二区| 国产精品青草久久久久福利99| 亚洲国产精品热久久| **网站欧美大片在线观看| 久久久蜜臀国产一区二区| 欧美一级午夜免费电影| 国产精品区二区三区日本 | 99精品久久久| 欧美好骚综合网| 亚洲日本va午夜在线影院| 在线观看亚洲视频| 欧美主播一区二区三区| 午夜在线成人av| 在线观看日韩一区| 欧美国产高潮xxxx1819| 一区二区毛片| 蜜桃av噜噜一区| 欧美成人tv| 日韩午夜一区| 久久久精品免费视频| 亚洲国产精品va| 欧美色欧美亚洲高清在线视频| 一区二区日韩精品| 久久香蕉国产线看观看av| 亚洲激情视频网| 国产午夜精品久久久| 久久这里有精品15一区二区三区| 亚洲风情亚aⅴ在线发布| 亚洲素人在线| 在线观看三级视频欧美| 国产精品国产成人国产三级| 久久精品免费| 亚洲一区在线观看视频| 亚洲国产另类久久精品| 久久精品91| 一区二区av| 日韩亚洲精品视频| 亚洲国产欧美一区二区三区丁香婷| 欧美日韩综合在线| 欧美成人精品| 欧美sm视频| 欧美激情一区二区三区蜜桃视频 | 欧美中文在线视频| 日韩亚洲成人av在线| 亚洲国产日韩精品| 亚洲黄色尤物视频| 99成人在线| 亚洲一区影院| 久久国产精品99国产| 久久精品99国产精品酒店日本| 午夜精品一区二区三区四区 | 国产精品永久免费在线| 欧美日韩三级在线| 国产精品99免费看 | 亚洲午夜久久久| 午夜精品www| 噜噜噜久久亚洲精品国产品小说| 狂野欧美激情性xxxx欧美| 欧美高清免费| 99国产一区| 久久精品水蜜桃av综合天堂| 美女精品在线| 欧美午夜视频在线| 精品91久久久久| 午夜伦理片一区| 欧美激情一区三区| 亚洲欧美国产一区二区三区| 久久久久免费| 国产精品免费一区豆花| 亚洲激情亚洲| 久久丁香综合五月国产三级网站| 欧美激情精品久久久| 亚洲欧美日韩在线高清直播| 母乳一区在线观看| 国产一区二区三区久久悠悠色av | 国产欧美91| 亚洲性视频网站| 亚洲福利视频一区二区| 亚洲男同1069视频| 欧美午夜免费| 欧美一级片久久久久久久| 亚洲欧洲美洲综合色网| 久久久综合网站| 红杏aⅴ成人免费视频| 久久精品99国产精品日本| 亚洲国产美女精品久久久久∴| 久久激情综合网| 性色av一区二区三区红粉影视| 国产精品欧美在线| 久久精品视频免费观看| 久久国产手机看片| 国产精品综合网站| 久久午夜色播影院免费高清| 久久久国产精品一区二区中文 | 欧美日韩一区二区在线| 99精品免费| 午夜精品一区二区三区在线| 国产日韩欧美在线看| 久久久久久尹人网香蕉| 久久精品中文字幕一区二区三区| 国产一区二区成人| 亚洲国内在线| 国产女精品视频网站免费| 久久先锋影音| 欧美性猛片xxxx免费看久爱| 久久人人97超碰精品888| 欧美日韩国产天堂| 欧美在线免费一级片| 欧美69视频| 久久噜噜噜精品国产亚洲综合| 欧美xxx在线观看| 久久久久99精品国产片| 欧美午夜影院| 一区二区三区精品国产| 在线观看精品视频| 亚洲淫性视频| 一区二区欧美在线观看| 久久综合久久久久88| 久久精品夜色噜噜亚洲aⅴ| 欧美天堂亚洲电影院在线播放 | 国产日韩精品一区观看| 日韩一级黄色av| 一区二区三区 在线观看视| 欧美成人一区二区三区在线观看 | 黄色影院成人| 一级成人国产| 亚洲视频在线一区| 欧美男人的天堂| 中文欧美在线视频| 亚洲欧美日韩一区二区在线|