COM自动化谁能指点下

契约无罪 2014-05-14 09:59:48
问题:关于COM组件自动化还有一些不太明白,主要是类型库 IDispatch
资料:com技术内幕
描述:1.书本前面主要讲的概括下就是IUnknown的详细介绍,以及C++实现方式
2.接下来的大都例子都是获得接口然后调用接口里的函数,当然也是在C++环境中
3.接着就是动态链接库去实现COM,以我的理解是注册表中保存相关信息,然后使用的过程中直接通过查询注册表找COM组件,然后获得类厂创建组件。自己也写了一个纯C++实现的COM组件。没有使用idl,所以加载的时候工程需要加入我要加载的组件的CLSID定义(一个.h,和一个.cpp,或者估计只要直接把CLSID的定义复制过来也能用)。不过这里觉得始终还是很纠结的,因为这样组件要发布的话,也要提供了CLSID了。不知道实际组件是怎么用的
4.接着包容聚合问题还好理解
5.exe中的服务器什么东西看不懂 = 。= 跳过了
6.接着就是调度接口和自动化了,就这方面感觉挺重要但是还是不太懂。好像是因为脚本语言宏语言不能识别虚函数的原因,然后为了他们能够用组件才处理了一下。接着就模模糊糊了,不知道谁能详细说下
7.如果可以的话也可以讲下存根和代理的实现,还是只要知道他们是干嘛用的。生成存根代理用C++怎么写,还是就用IDL编译以后自动就有了
...全文
91 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 2 楼 kamenoe 的回复:
[quote=引用 1 楼 akirya 的回复:] IDispatch是给脚本用的,根据名字调用方法。
是不是我测试平台用的vc 6.0所以,潜移默化中我一直使用的是通过vtbl直接调用函数么 在6.0里面使用IDispatch的那种方式,是不是先获得IDispatch,然后调用那个函数获得ID,然后invoke就行了 1.这个需要我在dll做什么处理,相对于原来我自己手写的那个本(直接从自己接口派生创建的组件而言,没有继承IDispatch,所以第一个要做的估计是要冲IDispatch继承吧,然后对自己已有的函数要不要做什么处理就不知道了) 2.其他语言也是获得IDispatch接口指针么,好像现在大都语言都不支持指针了吧[/quote] 1 比如JS,VBA 2 只是程序员看不到而已。
契约无罪 2014-05-14
  • 打赏
  • 举报
回复
引用 1 楼 akirya 的回复:
IDispatch是给脚本用的,根据名字调用方法。
是不是我测试平台用的vc 6.0所以,潜移默化中我一直使用的是通过vtbl直接调用函数么 在6.0里面使用IDispatch的那种方式,是不是先获得IDispatch,然后调用那个函数获得ID,然后invoke就行了 1.这个需要我在dll做什么处理,相对于原来我自己手写的那个本(直接从自己接口派生创建的组件而言,没有继承IDispatch,所以第一个要做的估计是要冲IDispatch继承吧,然后对自己已有的函数要不要做什么处理就不知道了) 2.其他语言也是获得IDispatch接口指针么,好像现在大都语言都不支持指针了吧
  • 打赏
  • 举报
回复
IDispatch是给脚本用的,根据名字调用方法。

703

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder ActiveX/COM/DCOM
社区管理员
  • ActiveX/COM/DCOM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧