描述:
我初学com,有些问题对大家来说可能很简单,可是我不懂
现在急于解决如下5个问题
1、我知道某一个COM文件,如何获得其CLSID(我并不知道这个COM叫什么)
2、我怎么枚举一个com组件里的所有接口?(即我知道一个组件的CLSID,如何枚举获得其内部的所有interface)
3、我知道某个组件,也知道其中的"IAbcde"这个接口,如何在CoCreateInstance里使用?组件的CLSID我是用CLSIDFromString获得的,但是IAbcde的IID我没办法用IIDFromString获得。(请告诉我除了用#import外的方法,也就是说我要动态获得)
4、我如何象OLEView那样,枚举获得某个接口中的所有属性、方法、事件
5、我如何象OLEView那样,枚举获得某个接口中的所有属性、方法、事件的详细参数和返回值
我不知道这些问题是不是过份,大家帮我一起up一样,如果有知道的,帮忙指条路
谢谢
一个问题30分,一共5个问题150分,另外50分给up的人
分不够可以再加,我现在只能出200分
解决方案1:
我也初学,期待高手
解决方案2:好问题,打个记号,回头研究
解决方案3: 补充:
1.将DLL注册,根据文件名字到注册表搜索,或在组件服务,DCOM,属性拽可以CLSID等
2.枚举所有接口?
(1)可以通过OLE VIEW看
(2)如果有.h可以看到,或导入.tlb都可以看到
3.(1)创建进程内组件,本机进程外组件 CoCreateInstance(.. dwClsContext..)
这里dwClsContext要做标志,可参见MSDN
(2)如果创建远程组件,使用CoCreateInstanceEx
唯一区别COSERVERINFO * pServerInfo 涉及到一些安全信息
获得接口的IID,可以使用__uuidof()
4.仅仅枚举一个组件的接口,属性,事件,也很容易
把BEGIN_COM_MAP,BEGIN_SINK_MAP......里面的数组打印出来就可以了
5. 如果你写出来了OLEView,我不仅给1000分,还会花钱买,用来学习
用oleview工具打开com的文件即可查看详细信息
解决方案5:如果接口支持IDispatch,可以的到有关的属性和方法。
解决方案6:LoadTypeLib / LoadTypeLibEx 函数可以得到ITypeInfo,再QueryInterface ITypeLib2
解决方案7:4,5 查LoadTypeLib函数的Sample,可以解决OleView的大部分工作。
解决方案8: 在MSDN中查一下LoadTypeLib Sample或者TiBrowser.
你要得所有东西都应该可以读typelib得到
GOOD LUCK
1.。那只有查注册表了。。
解决方案10:先做个记号再说
解决方案11: 1 注册的com组建可以查注册表找guid
2 http://www.5ivb.net/Info/95/Info31533/
这是.net下的用法,应该可以套用,未经验证

