自动化组件的困惑

gogocat 2000-06-02 03:27:00
各位:
我现有一个关于自动化组件方面的问题,困惑了我很久,希望能得到大家的帮助。
自动化组件只是实现了IDispatch接口的COM组件,那么,为什么象VBS之类的宏语言可以通过IDispatch接口访问组件而不能直接访问别的接口呢?也就是说为什么宏语言只能访问和别的接口有同样结构的IDispatch接口呢?
...全文
209 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
nail 2000-06-06
  • 打赏
  • 举报
回复
Un1说的队,VBS先使用GetIDsOfNames获得DISPID,然后以DISPID为参数执行Invoke来访问method和property,所以性能相对来说比较低,并且有一些其它的限制,如函数参数只支持标准的数据类型
Un1 2000-06-06
  • 打赏
  • 举报
回复
VBS只通过IDispatch接口访问。固定的成员函数GetIDsOfNames和Invoke提供了这种访问,也就是VB中的"后期绑定"方式。
gogocat 2000-06-06
  • 打赏
  • 举报
回复
请教nail VBS又是如何访问IDispatch的服务的?因为我觉得VBS也是通过vtable先访问到IDispatch的Invoke服务,然后才可以通过IDispatch翻译。
nail 2000-06-05
  • 打赏
  • 举报
回复
VBS中没有指针的概念,所以无法访问vtable,只能通过IDispatch接口翻译一下
halfdream 2000-06-02
  • 打赏
  • 举报
回复
只通过IDisptch 接口我想其中一个主要原因就是为了方便。
它当初可能就是为了VB设立的。

在调用一个COM 方法的时候,必须先用IDisptch 返回一个调度标识,
然后, 第二次,IDispatch::Invoke ,才能真正调用相应的方法。

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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