如何使用第三方COM组件
2007-10-18 14:31
281 查看
如何使用第三方COM组件
已经有了第三方的COM组件(如OCX,DLL,TLB),该如何使用呢?
最简单的方法就是:
了解组件
建议使用OleView.exe程序来详细了解组件包含什么样的接口和方法。找不到,Dcomcnfg.exe也行。
引入接口
通过#import指令引入接口,例如:
#import “ABCDEFG.DLL” named_guids raw_interfaces_only no_namespace
初始化
调用CoInitialize()或CoInitlaizeEx()来初始化COM运行环境,例如:
CoInitialize(0);
获取接口
根据第一步了解的知识,在初始化环境后,可以获取接口了,例如:
IMyObject* obj = NULL; // 假定接口是IMyObject
// 返回值为HRESULT类型的,典型地,S_OK(0)表示成功,E_FAIL表示失败,还有其它的失败值
HRESULT hr = CoCreateInstance(__uuidof(MyObject), NULL, CLSCTX_ALL, __uuidof(IMyObject), (void **)&obj);
if ( SUCCEEDED(hr) ) // 或者 if ( !FAILEd(hr) )
{
…..利用接口作些事
//最后释放接口
IMyObject->Release();
}
方法调用
根据第一步了解的知识,调用接口的方法做某些事,例如:
HRESULT hr= obj->Method(arg1, arg2); // 方法都返回HRESULT类型的值
if ( SUCCEEDED(hr) )
{
// 调用成功,作其它事
}
注意事项
使用COM组件,特别注意方法的参数类型,如BSTR,SAFEARRAY,VARIANT之类 ,如果有用到这些类型,请仔细参阅有关这些类型说明的资料。
结束
接口使用结束后,需要释放COM环境,如下:
CoUninitialize();
已经有了第三方的COM组件(如OCX,DLL,TLB),该如何使用呢?
最简单的方法就是:
了解组件
建议使用OleView.exe程序来详细了解组件包含什么样的接口和方法。找不到,Dcomcnfg.exe也行。
引入接口
通过#import指令引入接口,例如:
#import “ABCDEFG.DLL” named_guids raw_interfaces_only no_namespace
初始化
调用CoInitialize()或CoInitlaizeEx()来初始化COM运行环境,例如:
CoInitialize(0);
获取接口
根据第一步了解的知识,在初始化环境后,可以获取接口了,例如:
IMyObject* obj = NULL; // 假定接口是IMyObject
// 返回值为HRESULT类型的,典型地,S_OK(0)表示成功,E_FAIL表示失败,还有其它的失败值
HRESULT hr = CoCreateInstance(__uuidof(MyObject), NULL, CLSCTX_ALL, __uuidof(IMyObject), (void **)&obj);
if ( SUCCEEDED(hr) ) // 或者 if ( !FAILEd(hr) )
{
…..利用接口作些事
//最后释放接口
IMyObject->Release();
}
方法调用
根据第一步了解的知识,调用接口的方法做某些事,例如:
HRESULT hr= obj->Method(arg1, arg2); // 方法都返回HRESULT类型的值
if ( SUCCEEDED(hr) )
{
// 调用成功,作其它事
}
注意事项
使用COM组件,特别注意方法的参数类型,如BSTR,SAFEARRAY,VARIANT之类 ,如果有用到这些类型,请仔细参阅有关这些类型说明的资料。
结束
接口使用结束后,需要释放COM环境,如下:
CoUninitialize();
相关文章推荐
- Angular学习笔记【如何正确使用第三方组件】
- 不使用第三方组件,只调用COM,导出EXECL,但只装OFFICE2007,不装2003,直接强制引用动态库的方法
- 干货!手把手教你如何使用第三方通讯服务实现LayIM Socket组件开发。
- Delph组件如何使用自己的图标
- 在.Net中使用COM组件
- IE中使用google的搜索程序时总是先弹出“查看在google.com.hk上的搜索结果”页面,如何让其直接返回搜索结果?
- 如何注册和注销进程外 COM 组件(ActiveX EXE)
- COM编程入门--- 第一部分——什么是COM,如何使用COM
- Delph组件如何使用自己的图标
- Delphi 在线程中如何使用TClientSocket组件并自动检测该组件
- Angular 如何使用第三方库的方法
- delphi7 如何加载com组件
- 如何使用kaptcha验证码组件
- React第三方组件5(状态管理之Redux的使用②TodoList上)
- FleaPHP 开发指南 - 8. 如何使用 RBAC 组件实现访问控制
- Flex中,如何把页面上的组件对象当作map一样使用
- Android应用程序四大组件之使用AIDL如何实现跨进程调用Service
- 在COM应用程序中使用.NET组件
- 演示如何使用微软的CAPICOM组件
- 如何使用cocoa pods管理第三方框架