看流星社区

 找回密码
 注册账号
查看: 2338|回复: 0

不注册直接使用COM组件的方法

[复制链接]

该用户从未签到

发表于 2013-3-30 09:28:38 | 显示全部楼层 |阅读模式
1. 定义导出函数指针
  1. //定义函数指针
  2. typedef   HRESULT    (_stdcall *Func) (REFCLSID , REFIID , LPVOID*);
  3. Func   g_DllGetClassObject=NULL;
复制代码
2.导出COM组件这个DLL 的 DllGetClassObject函数
  1.         if (g_DllGetClassObject==NULL)
  2.                 {
  3.                         CString strParam =  theApp.strRootDirectory + TEXT("//MMGifCtrl.dll");
  4.                         HMODULE  module=LoadLibrary(strParam.GetBuffer(0));

  5.                         if (module!=NULL)
  6.                         {
  7.                                 g_DllGetClassObject=  (Func) GetProcAddress(module,"DllGetClassObject");
  8.                         }
  9.                 }
复制代码
3.通过 DllGetClassObject 获得COM的类厂,然后通过类厂获得所要的接口。
  1. IMMGifCtrl *    pShowGif     = NULL;
  2. CComQIPtr<IClassFactory>  pGifFactory;
  3. HRESULT         hr;



  4. //如果 g_DllGetClassObject不为空
  5. if (g_DllGetClassObject)
  6. {
  7. hr=   g_DllGetClassObject(__uuidof(CMMGifCtrl), IID_IClassFactory,(LPVOID*)&pGifFactory);

  8.    if (hr  ==S_OK)
  9.    {
  10.         pGifFactory->CreateInstance(NULL,__uuidof(IMMGifCtrl),(LPVOID*)&pShowGif);

  11.         if (pShowGif)
  12.         {
  13.           //成功获得COM接口
  14.         }
  15.    }

  16. }
复制代码
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-5-2 05:05

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表