不注册直接使用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接口
}
}
}
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接口
}
}
}
相关文章推荐
- 不注册直接使用COM组件的方法
- 不注册直接使用COM组件的方法
- 不注册直接使用COM组件的方法
- datagridview可直接使用的美观方法
- ASP.Net Ajax应用初步:使用AJAX直接调用后台方法
- AspJpeg组件:介绍、注册、高级使用方法 [精]
- WIN2K下COM组件的反注册方法
- 深度解析ASP.NET2.0中的Callback机制callback的一般使用方法还算简单,直接参照
- VMware直接使用主机USB HID(包含USB键盘鼠标)的方法
- 关于asp.net网站发布后,使用登录控件和注册控件时出现“数据库只读,无法进行数据更新”的解决方法
- 回发或回调参数无效。在配置中使用 或在页面中使用 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。
- 优影—mp3mp4影音下载,使用CPU ID注册方式好像直接拷贝到另外一台电脑可用。
- COM组件的使用方法
- JS注册事件 JS:attachEvent和addEventListener 使用方法
- 在VC中使用COM组件的几种方法
- 一个用jmail发信的过程,及使用方法.使用时直接调用就行
- Flex Remote Object中直接使用HttpSession的方法
- Flex Remote Object中直接使用HttpSession的方法
- JAVA中使用COM组件方法
- 回发或回调参数无效。在配置中使用 或在页面中使用 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。