您的位置:首页 > 其它

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

2011-05-21 11:10 225 查看
                                                        不注册直接使用COM组件的方法

 

      1. 定义导出函数指针

     
//定义函数指针
typedef   HRESULT    (_stdcall *Func) (REFCLSID , REFIID , LPVOID*);
Func   g_DllGetClassObject=NULL;


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

     
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的类厂  ,然后通过类厂获得所要的接口

    
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接口
}
}

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