您的位置:首页 > 其它

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

2015-01-20 20:43 260 查看
不注册直接使用COM组件的方法

1. 定义导出函数指针

[cpp] view
plaincopy

//定义函数指针

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

Func g_DllGetClassObject=NULL;

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

[cpp] view
plaincopy

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
plaincopy

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

}

}

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