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

牽著老婆滿街逛

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

vc中調用Com組件的方法詳解

轉載自:網絡,來源未知,如有知曉者請告知我。


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

2.在工程中導入組件或類型庫
 #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創建一個組件(特別是mutilThreads)的多個對象的
     時候,效率更高.
   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,接著生成類對象及類實例(這方法可以
使組件不用在注冊表里注冊,這是最原始的方法,但這樣做沒什么意義,至少失去了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,具體方法:
    調出添加類向導(.NET中),選擇類型庫中MFC類,打開,選擇"文件",選擇
"myCom.dll"或"myCom.tlb",接下來會出來該myCom中的所有接口,選擇你想
生成的接口包裝類后,向導會自動生成相應的.h文件.這樣你就可以在你的MFC中
像使用普通類那樣使用組件了.(CreateDispatch("myCom.GetRes") 中的參數就是ProgID通過Clsid在注冊表中可以查詢的到)
CoInitialize(NULL);
   CGetRes getRest;
   
if (getRest.CreateDispatch("myCom.GetRes"!= 0)
   
{
   getRest.Hello();
   getRest.ReleaseDispatch();
   }

   CoUninitialize();


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

   CoUninitialize();

以上就是COM的5中方法,當然具體怎么使用還是在于程序的環境,加以琢磨....

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

評論

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

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

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

總結的很好啊  回復  更多評論   

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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久久不卡二区| 老司机精品久久| 久久躁狠狠躁夜夜爽| 久久精品综合一区| 久久久久国产一区二区三区| 久久久国产精品一区二区中文 | 欧美成人69| 美女视频网站黄色亚洲| 欧美va天堂va视频va在线| 欧美福利网址| 欧美色中文字幕| 国产精自产拍久久久久久| 国产有码一区二区| 亚洲精品一区二区三区蜜桃久 | 尤物99国产成人精品视频| 黄色影院成人| 亚洲精品一区二区三区在线观看| 99精品视频免费全部在线| 亚洲视频碰碰| 久久久不卡网国产精品一区| 欧美电影资源| 久久久亚洲成人| 玖玖玖国产精品| 亚洲精品在线看| 一区二区三区不卡视频在线观看| 亚洲主播在线观看| 久久综合久久久久88| 欧美日韩高清在线播放| 国产在线不卡| 亚洲午夜视频在线观看| 免费成人毛片| 亚洲制服少妇| 欧美精品激情在线| 狠狠色综合色区| 亚洲午夜免费视频| 欧美亚日韩国产aⅴ精品中极品| 亚洲一区三区在线观看| 久久免费精品视频| 国产精品久久久久久久久借妻| 国内精品模特av私拍在线观看| 99精品国产在热久久下载| 久久精品人人做人人爽电影蜜月| 亚洲国产成人精品女人久久久 | 亚洲电影视频在线| 午夜精品一区二区三区在线播放| 欧美 日韩 国产一区二区在线视频 | 含羞草久久爱69一区| 亚洲尤物在线视频观看| 欧美成年人在线观看| 亚洲欧美制服另类日韩| 欧美色偷偷大香| 亚洲美女黄色片| 欧美国产在线电影| 毛片av中文字幕一区二区| 国产啪精品视频| 翔田千里一区二区| 亚洲午夜一区二区三区| 国产精品久久久久av免费| 亚洲一区二区av电影| 99天天综合性| 欧美视频日韩视频在线观看| 一本高清dvd不卡在线观看| 亚洲黄色大片| 欧美精品日韩精品| 亚洲精品人人| 亚洲美女电影在线| 欧美剧在线免费观看网站| 亚洲精品黄色| 99精品国产高清一区二区 | 欧美在线欧美在线| 国产伦精品一区二区三区高清| 亚洲欧美国产毛片在线| 亚洲直播在线一区| 国模私拍一区二区三区| 久久久久亚洲综合| 久久精品国产一区二区三区免费看| 国产精品视频xxxx| 国产精品日本欧美一区二区三区| 午夜亚洲福利| 亚洲一区精品电影| 国产欧美日韩一区二区三区| 亚洲男女自偷自拍图片另类| 久久综合狠狠综合久久综青草| 亚洲在线免费| 国产午夜精品美女毛片视频| 久久av一区二区三区| 亚洲一二区在线| 国产精品99久久不卡二区| 久久中文字幕一区| 欧美福利影院| 一区二区欧美国产| 一区二区三区高清不卡| 欧美日韩一区二区在线视频 | 亚洲四色影视在线观看| 亚洲国产你懂的| 欧美日本网站| 亚洲欧美日韩综合| 亚洲欧美日本国产专区一区| 国产日韩欧美不卡在线| 免费看av成人| 久久久蜜桃一区二区人| 亚洲手机视频| 久久成人精品| 亚洲毛片av在线| 亚洲专区免费| 在线精品国产欧美| 亚洲精品韩国| 国产亚洲精品aa| 欧美成人a视频| 欧美精品性视频| 久久成年人视频| 亚洲欧美日韩天堂| 亚洲精品视频在线观看网站| 亚洲夜间福利| 亚洲精品视频中文字幕| 午夜宅男欧美| 一区二区电影免费在线观看| 午夜欧美精品| 亚洲免费av电影| 亚洲欧美日韩中文播放| 亚洲精品欧美| 欧美国产日韩一区二区在线观看| 午夜精品一区二区在线观看| 免费成人毛片| 久久久久综合网| 欧美性猛片xxxx免费看久爱| 亚洲欧美国产77777| 欧美日本在线| 免费不卡在线视频| 国产伦精品一区二区三区视频黑人| 女同一区二区| 国产亚洲精品久久久久动| 亚洲免费电影在线| 国产精品美女| 99精品视频免费观看视频| 激情亚洲一区二区三区四区| 亚洲视频精品在线| 一区二区在线观看av| 午夜精品成人在线| 亚洲一区三区电影在线观看| 免费日本视频一区| 久久婷婷国产综合国色天香| 国产九区一区在线| 欧美肥婆在线| 亚洲黑丝在线| 噜噜噜噜噜久久久久久91| 久色婷婷小香蕉久久| 激情视频一区二区| 中文国产成人精品| 亚洲视频综合在线| 亚洲一区二区三区免费在线观看| 欧美在线视频a| 久久国产精品第一页| 国产精品男女猛烈高潮激情 | 亚洲国产精品久久久久秋霞不卡| 尤物在线精品| 久久久久国产精品一区| 欧美一区高清| 国产日韩一区欧美| 午夜精品久久久久久久99黑人| 一区二区三区视频在线| 久久久夜夜夜| 日韩视频三区| 亚洲网站在线看| 欧美视频一区| 亚洲一区二区毛片| 欧美一区国产二区| 亚洲国产精品电影| 欧美国内亚洲| 一区二区欧美激情| 欧美一区在线视频| 国产亚洲精品一区二555| 亚洲欧洲日产国产综合网| 亚洲天堂av图片| 国产欧美精品国产国产专区| 亚洲裸体视频| 久久永久免费| 亚洲肉体裸体xxxx137| 欧美日韩免费一区二区三区视频| 亚洲网站视频福利| 久久网站热最新地址| 亚洲一区二区不卡免费| 国产欧美一区二区精品仙草咪| 久久久久久久综合| 亚洲精品在线观| 久久久久久久综合色一本| 最新日韩精品| 国产精品推荐精品| 久久先锋影音av| 亚洲免费av电影| 欧美资源在线观看| 国产日韩欧美另类| 欧美午夜剧场| 久久综合网络一区二区| 亚洲视频1区| 欧美v国产在线一区二区三区| 99精品欧美一区二区蜜桃免费|