不注册COM组件直接调用接口
来源:互联网 发布:淘宝排名权重 编辑:程序博客网 时间:2024/04/30 08:47
本文以COM组件AppLogo.dll为例,AppLogo.dll中提供了IDunRui接口,在不使用regsvr32向系统注册的情况下创建IDunRui接口并调用。
一、导入组件或类型库;
在C++中使用COM组件,需要向其提供类型库,以公开接口和方法。类型库文件类型为tlb文件,直接#import导入即可。类型库也可以以资源形式编译进COM组件Dll内部,资源类型为TYPELIB,资源号为1即可。如果Dll中已包含类型库,只需#import导入COM组件Dll文件即可。代码如下:
#import "AppLogo.dll" no_namespace// or...#import "AppLogo.tlb" no_namespace// or...#import "AppLogo.dll"using namespace AppLogo;// or...#import "AppLogo.tlb" using namespace AppLogo;
二、动态载入COM组件并创建接口。
// Declare in class as a member.CDllFromFile m_dllCOM;// Load Dll file.m_dllCOM.LoadLibrary(_T("AppLogo.dll"));//TODO in initializing.IDunRui *pDunrui = NULL;CComQIPtr<IClassFactory> pClassFactory;typedef HRESULT (__stdcall *fnDllGetClassObject)(REFCLSID rclsid, REFIID riid, LPVOID *ppv);fnDllGetClassObject pDllGetClassObject = (fnDllGetClassObject)m_dllCom.GetProcAddress("DllGetClassObject");if (NULL != pDllGetClassObject) { HRESULT hr = pDllGetClassObject(__uuidof(AppLogo::DunRui), IID_IClassFactory, (LPVOID*)&pClassFactory); if (S_OK == hr) { hr = pClassFactory->CreateInstance(NULL, __uuidof(AppLogo::IDunRui), (LPVOID*)&pDunrui); if (S_OK == hr) { AfxMessageBox(_T("Succeed !")); } } }
CDllFromFile源码下载:http://url.cn/L39MWg
0 0
- 不注册COM组件直接调用接口
- 不注册COM组件直接调用接口
- Delphi中不进行组件注册而直接调用COM对象
- 不注册直接使用COM组件的方法
- 不注册直接使用COM组件的方法
- 不注册直接使用COM组件的方法
- 不注册直接使用COM组件的方法
- 免注册调用com组件类
- Atl Com组件DLL非注册调用
- 调用DllRegisterServer进行COM组件的注册
- Delphi(Lazarus)怎样不注册调用COM
- java 如何调用com组件接口方法
- vb6内联汇编,调用函数指针,不注册调用com
- 在.NET应用程序中不注册使用ocx Com组件
- COM 组件设计与应用7 - 编译、注册、调用
- 调用DllRegisterServer方法进行COM组件的注册
- COM 组件设计与应用7 - 编译、注册、调用
- 调用DllRegisterServer方法进行COM组件的注册
- 用手机控制的你的单反——DSLR Controller实测
- 段寄存器在实模式下和保护模式下的作用有什么不同
- cdn tair
- VC++多线程编程
- 互联网广告系统综述一生态圈
- 不注册COM组件直接调用接口
- linx ps aux显示的信息
- Android adb命令点亮屏幕说明
- 把窗体客户区图像保存到文件或剪切板
- Android 如何设置视频来电的默认铃声
- 2:字符串插入
- oracle归档日志
- redhat 企业版5.4 使界面支持中文的方法
- [LeetCode]Reverse Nodes in k-Group, 解题报告