凡是跟COM沾边的都来看一看

时间:2022-09-17 14:16:10
希望各位高手把在学习COM中容易遇到的问题、解决办法、小技巧、概念的理解等方面经验公开一下,以方便后者。引用sxbyl的一句话:你花掉一分钟,可以节约别人的几个小时!

26 个解决方案

#1


呵呵,我有一个小东东,在 http://263.csdn.net/edyang Source 下载区,叫 OLEMISC,看谁需要它?

#2


高手们,留点吧!

#3


遗憾,又来晚了一步
为什么说又呢?

#4


一群痛并痛苦着的com菜鸟渴望高手的甘露,行行好,赏点吧。

#5


难道大家都是收藏专家吗?

#6


看来vcmfc铁了心要搞定COM了,破费这么多……

#7


哈哈……我现在又多了一个任务,是做一个小COM,可以和大家保持同步了:)

#8


考,一个都没有!,把我的自已整理一下。

#9


加入一个:UnderStanding String in COM(共3页) 作者:edyang提供:
http://www.devx.com/free/mgznarch/vcdj/1998/dec98/comstring1.asp

#10


有关IDD_Ixxxxxx,这个GUID定义在哪里:你项目的目录下的xxxxx_i.c文件中。 

#11


一群痛并痛苦着的com菜鸟渴望高手的甘露,行行好,赏点吧。 

#12


我们学得步履蹒跚、连滚代爬,高手们帮帮忙吧,举手之劳作环保……

#13


唉,问个问题给大侠们吧

看来大侠喜欢实际一点的
我用Result := FControlDispatch.Invoke( Index, GUID_NULL, 0, DISPATCH_PROPERTYGET, DispParams, @Value, @ExcepInfo, nil );
注:这是DELPHI的一段,可以得到一个搂口

但是大家知道,象M$的有些控件是类中有类的,我又如何得到这里面的类的接口

是不是里面的是结构呀,,对外只有一个IID

#14


COM先囫囵吞枣的做东西,等到看懂了,……,黄花菜都凉了,呵呵!(我现在也是正在连VC一块啃COM,进度表压着凑合着做贝)

#15


CSDN真可恶,一会就是SESSION过期,还让人一上它的网就不干别的不成

#16


发的文章不快,这倒不慢,

放水一篇,(转载)
1、接口
  接口是一个对象将自身功能引出给外部世界的途径。在COM中,接口是对象(构件)
实现的函数的指针表(存在于对象所在的内存中,向C++中虚函数表)。这个表代表了
接口,它指向的函数就是接口的方法。一个对象可以引出任意多的接口。
   每个接口都基于COM的基本接口-IUnknown,IUnknown的方法引导访问对象的其他可
见接口。同时,每个接口都有一个唯一的标识(IID)。这个唯一性比较容易支持接口
的版本管理。一个新版本的接口就是一个新的接口-一带一个新的IID。
注意:对于COM , OLE ,Active X 的接口都是预先定义好的。实际上WINDOWS95,WINNT
都提供了定义IID的应用程序--UIIDGen。

2、IUnknown
  它是每个COM接口的基础接口。它定义了三个方法:QueryInteface ,AddRef   
Release。QueryInteface提供给用户通过一个接口访问这个对象另一个接口指针的
方法。另两个函数实现了接口级的引用计数。

3、引用计数
COM自己本身不能自动将一个对象从内存中释放掉。代替它,对象的程序实现者必须设
计出对无用的对象的释放。这个程序根据引用计数决定了一个对象是否可以被释放。
COM通过AddRef  Release 两个方法管理接口上的引用计数。调用的一般规则:
l 客户端得到接口的指针时,调用接口上的AddRef。
l 客户使用完这个接口后必须调用Release。
在一个简单的实现里,这两个函数只是对对象内部的计数变量进行增减。当引用计数达
到0时表示这个对象不再被使用,所以将从内存中释放掉。
4、QueryInterface
虽然存在对象静态展现其函数功能的的机制,但COM还是利用IUnknown 的方法
QueryInterface的机制来实现。
每个接口都是从IUnknown派生而来的,因此每个接口都QueryInterface 的一个实现。
不考虑实现,这个方法通过一个对象给定的接口的IID来访问这个接口在内存中的指针。
如果这个对象支持这个接口,它将返回一个指向这个接口的指针,同时调用AddRef方
法,否则,返回错误代码:E_NOINTERFACE。
5、Marshaling
COM的这种机制-Marshaling,允许一个进程中的对象的接口能够被另外一个进程所使
用。,在这个机制中,COM提供了代码来完成将一个方法的参数以进程间传递的格式进
行打包和完成另一端的参数解包。COM必须保证调用返回上的同步问题。
注意:在同一进程中使用的对象接口无需这个机制,但也许在线程间还是需要这个机制
来完成参数传递的。
6、Aggregation(聚集)
  一个对象的实现有时需要利用另一个已经实现的对象提供的功能--重用,因此希望第
二个对象将自己作为第一个对象的一部分出现 。COM利用Containment 和Aggregation
实现了这些目标。
Aggregation的含义就是:前一个对象(外部)创建后一个对象(内部)作为它自身对
象创建的一部分,同时内部对象的接口由外部对象来引出给用户。一个对象既可以具有
聚集性也可以不具有。如果实现聚集,对内部对象接口方法的访问必须由外部对象的来
代理完成。

#17


在程序中调用要动态分配或实例的COM时要注意要用指针的地址来进行参数传递:
... Sample(int **pInput)
{
    *pInput = ...;
   ....
}
... Sample1( BSTR *pbstr)
{
   *pbstr = (BSTR) malloc (.....);
   ....
}

#18


改:动态分配或...
为:动态分配内存或...
:O

#19


OLE,COM,COM+,Corba,俺都想学,可没有机会呀,往后还希望各位大虾多指导,多帮忙!

#20


您一点可方便我一个小时,一天,两天.....,留点吧!。妈的,像个乞丐!

#21


到底要点舍呀?不知道应该怎么去说啊?呵呵,小弟COM也不是很厉害。勉强入门了吧。

#22


    珠海优特电力产品配套有限公司(即珠海晋电公司)是位于珠海的专业从事电力自动化产品研制开发、生产经营的高科技民营企业。
    公司主要拥有继电保护及变电站自动化系统、电力五防、微机监控安防系统等三大系列30多种产品。公司自1991年于珠海成立以来,每年的销售额增长都在30%以上,2000年产值将达7000万,现有员工167人(其中各类专业技术人员120人)。公司是广东省及珠海市的优秀高新技术企业,是珠海市推荐的二板上市企业之一。公司质量体系通过ISO9001国际标准认证。
    公司*金述强是我国“五防”防误闭锁装置的发明人,公司“五防”产品全国市场占有率为50%——60%。

    现变电站自动化领域需要增加以下软件开发人员: 
高级程序员:1-2人(本科3年以上、硕士1年以上) 
  1.曾经设计或参与开发过SCADA系统(变电站当地功能、调度自动化等)或其他实时控制系统 
  2.有2年以上Visual C++开发经验(或熟悉SQL Server开发和有多年C语言开发经验并熟悉Windows编程) 
  3.有电力系统自动化专业背景优先 
程序员:5-7人(本科1年以上或硕士) 
  1.有半年以上的Visual C++开发经验(或熟悉C语言和Windows编程) 
  2.有电力系统自动化专业背景优先 
     以上高级程序员和程序员中特别欢迎: 
        有VC++下矢量图形开发经验者。 
        网络通讯编程开发经验者。 
        有SQL Server开发经验者。 
        有电力通讯规约开发经验者。 
高级测试员:1人(本科2年以上或硕士) 
  1.有2年以上Visual C++开发经验 
  2.熟悉SQL Server开发 
  3.熟练操作维护计算机系统及网络系统 
  4.有电力系统自动化专业背景优先 
测试员:1-2人(本科或大专) 
  1.熟练操作维护计算机系统及网络系统 
  2.有电力系统自动化专业背景优先 
此外,公司还大量招聘继电保护自动装置、通讯、单片机、机械设计、等方面的开发人员及销售经理。

工资政策如下(不包括奖金):
    本科生见习期月工资2000元,见习期满合格后月工资3000——8000元;硕士生(及水平相当人员)见习期月工资4000元,见习期满合格后月工资5000——10000元。优秀技术及管理人员可获得公司的股票期权奖励。公司为员工办理入户珠海手续并交纳社会劳动保险。
    应聘软件开发人员请联系:吉木斯先生,电话:0756-8633216、8620186-232;E-Mail:jimusi@sina.com。
    应聘其它职务请联系:牛俊伟女士、胡莹小姐,电话:0756-8633612;E-Mail:monicaniu@china.com。
另:公司总机:0756-8620186、8620819、8620918;研发部传真:0756-8620686;通讯地址:珠海市拱北桂花北路恒信工业城三座研发部或人力资源部,邮编:519020;公司网址:http://www.ut.com.cn

#23


edyang ,你的主页真是当当。。

#24


to ecore:要一些有关于COM的使用心得,小技巧这类的,有关ATL的书现在非常少呀!

#25


高手们,等待你们的甘露!

#26


连一个人都没留?

#1


呵呵,我有一个小东东,在 http://263.csdn.net/edyang Source 下载区,叫 OLEMISC,看谁需要它?

#2


高手们,留点吧!

#3


遗憾,又来晚了一步
为什么说又呢?

#4


一群痛并痛苦着的com菜鸟渴望高手的甘露,行行好,赏点吧。

#5


难道大家都是收藏专家吗?

#6


看来vcmfc铁了心要搞定COM了,破费这么多……

#7


哈哈……我现在又多了一个任务,是做一个小COM,可以和大家保持同步了:)

#8


考,一个都没有!,把我的自已整理一下。

#9


加入一个:UnderStanding String in COM(共3页) 作者:edyang提供:
http://www.devx.com/free/mgznarch/vcdj/1998/dec98/comstring1.asp

#10


有关IDD_Ixxxxxx,这个GUID定义在哪里:你项目的目录下的xxxxx_i.c文件中。 

#11


一群痛并痛苦着的com菜鸟渴望高手的甘露,行行好,赏点吧。 

#12


我们学得步履蹒跚、连滚代爬,高手们帮帮忙吧,举手之劳作环保……

#13


唉,问个问题给大侠们吧

看来大侠喜欢实际一点的
我用Result := FControlDispatch.Invoke( Index, GUID_NULL, 0, DISPATCH_PROPERTYGET, DispParams, @Value, @ExcepInfo, nil );
注:这是DELPHI的一段,可以得到一个搂口

但是大家知道,象M$的有些控件是类中有类的,我又如何得到这里面的类的接口

是不是里面的是结构呀,,对外只有一个IID

#14


COM先囫囵吞枣的做东西,等到看懂了,……,黄花菜都凉了,呵呵!(我现在也是正在连VC一块啃COM,进度表压着凑合着做贝)

#15


CSDN真可恶,一会就是SESSION过期,还让人一上它的网就不干别的不成

#16


发的文章不快,这倒不慢,

放水一篇,(转载)
1、接口
  接口是一个对象将自身功能引出给外部世界的途径。在COM中,接口是对象(构件)
实现的函数的指针表(存在于对象所在的内存中,向C++中虚函数表)。这个表代表了
接口,它指向的函数就是接口的方法。一个对象可以引出任意多的接口。
   每个接口都基于COM的基本接口-IUnknown,IUnknown的方法引导访问对象的其他可
见接口。同时,每个接口都有一个唯一的标识(IID)。这个唯一性比较容易支持接口
的版本管理。一个新版本的接口就是一个新的接口-一带一个新的IID。
注意:对于COM , OLE ,Active X 的接口都是预先定义好的。实际上WINDOWS95,WINNT
都提供了定义IID的应用程序--UIIDGen。

2、IUnknown
  它是每个COM接口的基础接口。它定义了三个方法:QueryInteface ,AddRef   
Release。QueryInteface提供给用户通过一个接口访问这个对象另一个接口指针的
方法。另两个函数实现了接口级的引用计数。

3、引用计数
COM自己本身不能自动将一个对象从内存中释放掉。代替它,对象的程序实现者必须设
计出对无用的对象的释放。这个程序根据引用计数决定了一个对象是否可以被释放。
COM通过AddRef  Release 两个方法管理接口上的引用计数。调用的一般规则:
l 客户端得到接口的指针时,调用接口上的AddRef。
l 客户使用完这个接口后必须调用Release。
在一个简单的实现里,这两个函数只是对对象内部的计数变量进行增减。当引用计数达
到0时表示这个对象不再被使用,所以将从内存中释放掉。
4、QueryInterface
虽然存在对象静态展现其函数功能的的机制,但COM还是利用IUnknown 的方法
QueryInterface的机制来实现。
每个接口都是从IUnknown派生而来的,因此每个接口都QueryInterface 的一个实现。
不考虑实现,这个方法通过一个对象给定的接口的IID来访问这个接口在内存中的指针。
如果这个对象支持这个接口,它将返回一个指向这个接口的指针,同时调用AddRef方
法,否则,返回错误代码:E_NOINTERFACE。
5、Marshaling
COM的这种机制-Marshaling,允许一个进程中的对象的接口能够被另外一个进程所使
用。,在这个机制中,COM提供了代码来完成将一个方法的参数以进程间传递的格式进
行打包和完成另一端的参数解包。COM必须保证调用返回上的同步问题。
注意:在同一进程中使用的对象接口无需这个机制,但也许在线程间还是需要这个机制
来完成参数传递的。
6、Aggregation(聚集)
  一个对象的实现有时需要利用另一个已经实现的对象提供的功能--重用,因此希望第
二个对象将自己作为第一个对象的一部分出现 。COM利用Containment 和Aggregation
实现了这些目标。
Aggregation的含义就是:前一个对象(外部)创建后一个对象(内部)作为它自身对
象创建的一部分,同时内部对象的接口由外部对象来引出给用户。一个对象既可以具有
聚集性也可以不具有。如果实现聚集,对内部对象接口方法的访问必须由外部对象的来
代理完成。

#17


在程序中调用要动态分配或实例的COM时要注意要用指针的地址来进行参数传递:
... Sample(int **pInput)
{
    *pInput = ...;
   ....
}
... Sample1( BSTR *pbstr)
{
   *pbstr = (BSTR) malloc (.....);
   ....
}

#18


改:动态分配或...
为:动态分配内存或...
:O

#19


OLE,COM,COM+,Corba,俺都想学,可没有机会呀,往后还希望各位大虾多指导,多帮忙!

#20


您一点可方便我一个小时,一天,两天.....,留点吧!。妈的,像个乞丐!

#21


到底要点舍呀?不知道应该怎么去说啊?呵呵,小弟COM也不是很厉害。勉强入门了吧。

#22


    珠海优特电力产品配套有限公司(即珠海晋电公司)是位于珠海的专业从事电力自动化产品研制开发、生产经营的高科技民营企业。
    公司主要拥有继电保护及变电站自动化系统、电力五防、微机监控安防系统等三大系列30多种产品。公司自1991年于珠海成立以来,每年的销售额增长都在30%以上,2000年产值将达7000万,现有员工167人(其中各类专业技术人员120人)。公司是广东省及珠海市的优秀高新技术企业,是珠海市推荐的二板上市企业之一。公司质量体系通过ISO9001国际标准认证。
    公司*金述强是我国“五防”防误闭锁装置的发明人,公司“五防”产品全国市场占有率为50%——60%。

    现变电站自动化领域需要增加以下软件开发人员: 
高级程序员:1-2人(本科3年以上、硕士1年以上) 
  1.曾经设计或参与开发过SCADA系统(变电站当地功能、调度自动化等)或其他实时控制系统 
  2.有2年以上Visual C++开发经验(或熟悉SQL Server开发和有多年C语言开发经验并熟悉Windows编程) 
  3.有电力系统自动化专业背景优先 
程序员:5-7人(本科1年以上或硕士) 
  1.有半年以上的Visual C++开发经验(或熟悉C语言和Windows编程) 
  2.有电力系统自动化专业背景优先 
     以上高级程序员和程序员中特别欢迎: 
        有VC++下矢量图形开发经验者。 
        网络通讯编程开发经验者。 
        有SQL Server开发经验者。 
        有电力通讯规约开发经验者。 
高级测试员:1人(本科2年以上或硕士) 
  1.有2年以上Visual C++开发经验 
  2.熟悉SQL Server开发 
  3.熟练操作维护计算机系统及网络系统 
  4.有电力系统自动化专业背景优先 
测试员:1-2人(本科或大专) 
  1.熟练操作维护计算机系统及网络系统 
  2.有电力系统自动化专业背景优先 
此外,公司还大量招聘继电保护自动装置、通讯、单片机、机械设计、等方面的开发人员及销售经理。

工资政策如下(不包括奖金):
    本科生见习期月工资2000元,见习期满合格后月工资3000——8000元;硕士生(及水平相当人员)见习期月工资4000元,见习期满合格后月工资5000——10000元。优秀技术及管理人员可获得公司的股票期权奖励。公司为员工办理入户珠海手续并交纳社会劳动保险。
    应聘软件开发人员请联系:吉木斯先生,电话:0756-8633216、8620186-232;E-Mail:jimusi@sina.com。
    应聘其它职务请联系:牛俊伟女士、胡莹小姐,电话:0756-8633612;E-Mail:monicaniu@china.com。
另:公司总机:0756-8620186、8620819、8620918;研发部传真:0756-8620686;通讯地址:珠海市拱北桂花北路恒信工业城三座研发部或人力资源部,邮编:519020;公司网址:http://www.ut.com.cn

#23


edyang ,你的主页真是当当。。

#24


to ecore:要一些有关于COM的使用心得,小技巧这类的,有关ATL的书现在非常少呀!

#25


高手们,等待你们的甘露!

#26


连一个人都没留?