您的位置:首页 > 其它

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

2016-09-29 16:19 253 查看
   不注册直接使用COM组件的方法

 

      1. 定义导出函数指针

     

[cpp] view
plain copy

//定义函数指针  

typedef   HRESULT    (_stdcall *Func) (REFCLSID , REFIID , LPVOID*);  

Func   g_DllGetClassObject=NULL;  

      2.导出COM组件这个DLL 的 DllGetClassObject函数

     

[cpp] view
plain copy

if (g_DllGetClassObject==NULL)  

    {  

        CString strParam =  theApp.strRootDirectory + TEXT("//MMGifCtrl.dll");  

        HMODULE  module=LoadLibrary(strParam.GetBuffer(0));  

  

        if (module!=NULL)  

        {  

            g_DllGetClassObject=  (Func) GetProcAddress(module,"DllGetClassObject");  

        }  

    }  

     3.通过 DllGetClassObject 获得COM的类厂  ,然后通过类厂获得所要的接口

    

[cpp] view
plain copy

IMMGifCtrl *    pShowGif     = NULL;  

CComQIPtr<IClassFactory>  pGifFactory;  

HRESULT         hr;  

  

  

  

//如果 g_DllGetClassObject不为空  

if (g_DllGetClassObject)  

{  

hr=   g_DllGetClassObject(__uuidof(CMMGifCtrl), IID_IClassFactory,(LPVOID*)&pGifFactory);  

  

   if (hr  ==S_OK)  

   {  

    pGifFactory->CreateInstance(NULL,__uuidof(IMMGifCtrl),(LPVOID*)&pShowGif);  

  

    if (pShowGif)  

    {  

          //成功获得COM接口  

        }  

   }  

  

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐