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

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
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>
            久久黄金**| 久久久国产视频91| 国产精品国产三级国产aⅴ无密码| 麻豆91精品91久久久的内涵| 欧美一区激情视频在线观看| 久久精品盗摄| 欧美成人免费视频| 欧美日本不卡高清| 国产精品电影在线观看| 欧美午夜精品| 国产亚洲成av人在线观看导航 | 国产精品免费在线| 国产区日韩欧美| 亚洲国产高清视频| 亚洲少妇在线| 久久婷婷人人澡人人喊人人爽| 欧美成人免费播放| 99亚洲一区二区| 久久9热精品视频| 欧美激情中文不卡| 国产一区视频网站| 中日韩美女免费视频网站在线观看| 欧美一级午夜免费电影| 欧美黑人多人双交| 亚洲尤物影院| 欧美成人中文| 国产午夜精品久久久久久久| 亚洲精品在线免费观看视频| 欧美在线三区| 日韩视频免费观看高清完整版| 欧美一级电影久久| 欧美三日本三级少妇三2023| 亚洲成人在线网站| 欧美影院一区| 9i看片成人免费高清| 久久夜色撩人精品| 国产视频一区三区| 亚洲欧美色婷婷| 亚洲欧洲偷拍精品| 欧美综合二区| 国产精品一区二区三区乱码| 91久久精品日日躁夜夜躁国产| 久久激情视频久久| 一区二区三区精密机械公司| 久久一本综合频道| 一区二区在线免费观看| 欧美在线视频一区二区| 欧美巨乳在线| 久久成人免费电影| 国产欧美日韩一区| 亚洲在线视频观看| 亚洲最新视频在线播放| 欧美精品一区二区三区一线天视频 | 一本久久综合亚洲鲁鲁| 欧美国产一区二区在线观看| 欧美在线免费| 国产午夜精品理论片a级探花| 欧美一级片在线播放| 亚洲色无码播放| 国产精品久久二区二区| 亚洲一区二区精品视频| 中日韩高清电影网| 国产精品系列在线播放| 欧美一区免费视频| 久久成人免费网| 亚洲高清一二三区| 亚洲国产视频一区| 亚洲第一偷拍| 欧美大片在线看| 一区二区久久| 亚洲欧美在线视频观看| 久久全国免费视频| 久久亚洲春色中文字幕久久久| 亚洲第一页在线| 亚洲精品国产精品国自产观看浪潮 | 国产免费成人av| 欧美在线91| 欧美一区二区观看视频| 在线观看一区| 亚洲大片在线观看| 欧美日韩高清区| 香蕉久久夜色精品国产使用方法| 欧美一区午夜视频在线观看| 伊人精品久久久久7777| 亚洲国产成人av| 欧美午夜精品久久久久久人妖 | 一区二区欧美日韩| 亚洲在线国产日韩欧美| 红桃视频亚洲| 亚洲靠逼com| 国产精品麻豆va在线播放| 久久精品免费播放| 欧美精品在线看| 久久精品99国产精品酒店日本| 久久精品国产亚洲5555| 一本在线高清不卡dvd| 亚洲一区日韩| 亚洲免费观看高清在线观看| 欧美一区二区视频观看视频| 亚洲国产天堂久久综合网| 欧美午夜在线一二页| 久久美女性网| 欧美性猛交xxxx乱大交退制版| 欧美一区二区三区在线观看| 蜜乳av另类精品一区二区| 午夜精品久久久久久99热软件| 乱中年女人伦av一区二区| 欧美一区二区三区电影在线观看| 久久亚洲欧美| 欧美一区二区在线观看| 欧美精品一区在线| 欧美 日韩 国产在线 | 欧美jizz19性欧美| 久久精品女人| 国产精品美女午夜av| 亚洲成色999久久网站| 国产午夜精品久久| 亚洲精品在线观| 亚洲人成网在线播放| 久久精品日韩| 久久久久久网站| 国产片一区二区| 一区二区免费在线视频| 亚洲精品男同| 免费观看久久久4p| 久久人人97超碰精品888| 国产精品免费在线| 亚洲午夜久久久久久尤物| 99亚洲一区二区| 久久天天躁夜夜躁狠狠躁2022| 欧美一级黄色录像| 国产精品sm| 亚洲美女少妇无套啪啪呻吟| 亚洲久久一区| 欧美巨乳波霸| 99pao成人国产永久免费视频| 亚洲人成啪啪网站| 欧美精品一区二区三区久久久竹菊 | 一区二区三区色| 亚洲综合精品四区| 国产精品久久久久高潮| 亚洲网站视频| 欧美怡红院视频| 国产一区清纯| 久久躁日日躁aaaaxxxx| 亚洲国产精品成人va在线观看| 亚洲国产欧美一区二区三区丁香婷| 麻豆精品在线视频| 亚洲精品在线看| 亚洲女与黑人做爰| 国产精品亚洲第一区在线暖暖韩国| 亚洲自啪免费| 免费成人黄色| 夜夜狂射影院欧美极品| 国产精品mv在线观看| 午夜精品一区二区三区在线视| 欧美电影在线观看完整版| 欧美一区二区黄| 黄色成人精品网站| 久久在线播放| 亚洲人成精品久久久久| 午夜精品久久久久久久白皮肤| 国产欧美日韩一区二区三区| 久久成人精品视频| 亚洲日本理论电影| 欧美一级理论片| 亚洲黄色有码视频| 欧美色中文字幕| 久久精品人人做人人综合| 亚洲破处大片| 香蕉成人久久| 亚洲精品乱码久久久久久久久| 国产精品chinese| 美日韩丰满少妇在线观看| 亚洲视频中文| 亚洲黄色一区| 久久天天狠狠| 亚洲一区欧美激情| 亚洲国产精品久久久| 国产欧美精品在线播放| 欧美多人爱爱视频网站| 亚洲欧美一区二区精品久久久| 欧美成人精品高清在线播放| 亚洲欧美日韩综合aⅴ视频| 亚洲福利一区| 国产香蕉久久精品综合网| 欧美成人中文| 久久久久综合网| 亚洲一区二区三区乱码aⅴ蜜桃女| 欧美好骚综合网| 久久久www免费人成黑人精品| 在线视频日韩| 日韩视频永久免费| 亚洲国产成人porn| 国产在线麻豆精品观看| 国产乱码精品一区二区三| 欧美视频在线播放| 欧美日韩不卡| 欧美激情中文不卡| 欧美成人xxx|