关于COM组件调用
转载自:http://www.cppblog.com/ice197983/articles/4178.html
一、调用步骤:
使用ATL编写的COM组件调用方法有两种:1.导入myCom.dll文件;2.导入myCom.tlb文件;(myCom是工程名称)
#import "\\..myCom.dll" #import "\\..myCom.tlb"
使用ATL编写完COM组件后,组件会自动被注册进注册表中。
两种方式最后使用方法是一样的:
1.初始化COM环境:
CoInitialize(); //也可以在MFC入口使用AfxOleInit()
2.获取com类和接口的GUID
方法1:CLSID/IID clsid/iid=__uuidof(classname/interfacename);
方法2:CLSIDFromProgID(ProgID,&clsid);
3.创建组件实例,获取接口指针
CoCreateInstance(clsid,NULL,CLSCTX_INPROC_SERVER,iid,(void**)&pMath);
4.调用函数
pMath->Add();
5.释放接口资源
pMath->Release();
6.释放COM环境:
CoUnInitialize();m
二、COM组件各文件的作用:
myCom_i.c:定义了接口、组件类、类型库的GUID
myCom_i.h:定义了接口和类的声明
这两个文件是IDL编译后产生的文件。
关于COM组件调用的更多相关文章
- 此操作失败的原因是对 IID 为“{000208DA-0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface
有些电脑报错,有些电脑正常. 环境:VS2010 WinForm程序, Office2007 C#操作Excel时报错.错误: 无法将类型为“System.__ComObject”的 COM 对象强制 ...
- 无法将类型为“Excel.ApplicationClass”的 COM 对象强制转换为接口类 型“Excel._Application”。此操作失败的原因是对 IID 为“{000208D5 -0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 加载类型库/DLL 时出错。 (异常来 自 HRESULT:
无法将类型为“Excel.ApplicationClass”的 COM 对象强制转换为接口类 型“Excel._Application”.此操作失败的原因是对 IID 为“{000208D5 -000 ...
- 最原始的COM组件调用过程(不使用注册表信息)
最原始的COM组件调用过程(不使用注册表信息) 最近因为项目的关系开始研究COM组件了,以前都认为COM过时了,所以也没怎么接触. 现在好好补补课了. 一般调用COM都是通过注册表找到它的位置, 然后 ...
- 为operamasks增加HTML扩展方式的组件调用
#为operamasks增加HTML扩展方式的组件调用 ##背景 之前的[博文](http://www.cnblogs.com/p2227/p/3540858.html)中有提及到,发现easyui中 ...
- K2 BPM项目 基于COM组件调用SAP RFC 问题
K2 BPM项目 基于COM组件调用SAP RFC 问题 问题前景: 环境:Win 2008 R2 64bit 最近项目中有支流程需求中需要在会计入账环节回写SAP的会计凭证. SAP组给我们提供.N ...
- Angular组件——父组件调用子组件方法
viewChild装饰器. 父组件的模版和控制器里调用子组件的API. 1.创建一个子组件child1里面只有一个greeting方法供父组件调用. import { Component, OnIni ...
- vue 子组件调用父组件的方法
vue中 父子组件的通信: 子组件通过 props: { //子组件中写的. childMsg: { //字段名 type: Array,//类型 default: [0,0,0] //这样可以指定默 ...
- vue 父组件调用子组件内置方法
背景介绍:外派到泰康做项目.这个项目中有个选择组织的功能,是一个树桩结构的懒加载,于是我就element-ui的tree组件封装了一个公共的组件. 但是后来发现他们的公司组织结构不是都请求的同一个接口 ...
- Vue子组件调用父组件的方法
Vue子组件调用父组件的方法 Vue中子组件调用父组件的方法,这里有三种方法提供参考 第一种方法是直接在子组件中通过this.$parent.event来调用父组件的方法 父组件 <temp ...
- React篇-子组件调用父组件方法,并传值
react 中子组件调用父组件的方法,通过props: 父组件: isNote(data){} <div className="tabC01"> <FTab ta ...
随机推荐
- 三层登录实例VB.NET版具体解释---理论加实战篇
层,百度百科这样解释,首先-重叠起来的东西:重叠起来的东西中的一部分:层次|表层|大气层.其次-重叠.反复:层峦叠嶂|层出不穷.最后-量词,用于能够分出层次的事物.女孩儿强烈的第六感,三层中的层一定是 ...
- ztreeSearch
$.fn.extend({ ztreeSearch : function(options) { // var _self=$(this); var defaults = { id : '', sear ...
- 使用java命令运行class文件带包名时出错
会出现classnotfound的错误. 如:文件x:/Test.java; package xx public class Test{} javac 编译后,java命令出错,需要手动构建包目录xx ...
- DevExpress控件显示前弹出到期时间解决办法
方法是,删除Properties下的license.licx文件,重新生成即可.
- Storm伪分布式搭建
配置zookeeper 下载zookeeper tar包 解压:tar -zxvf zookeeper-3.4.10.tar.gz -C /root/training/ 配置 cd /root/tra ...
- ubuntu 17 编译BTCoin
一. 安装开发环境 sudo apt-get update sudo apt-get install build-essential libtool autotools-dev autoconf pk ...
- nginx服务
nginx服务 一.nginx安装 1.yum安装:yum -y install nginx 注:centos 7中yum安装nginx前需要先安装 epel-release 2.源码包安装 安装之 ...
- pinpoint本地开发——agent
准备工作 执行maven打包 打包完成后,agent的包在agent/target/pinpoint-agent-1.6.2下面 重要配置文件 pinpoint.config profiler.col ...
- 利用CocoaPods管理本地工程和发布开源框架
发布自己三方框架 发布云端库 1.创建spec pod spec create xxx 2.编辑spec s.name:名称,pod search 搜索的关键词,注意这里一定要和.podspec的名称 ...
- jquery 如何获取单选框的值
jquery 如何获取单选框的值 获取单选框的值有三种方式: 1.$('input:radio:checked').val():2.$("input[type='radio']:chec ...