描述:
关于自动化接口的三点疑问:
一、自动化对象的IDispatch接口是以vtable的形式来表示的,“不支持指针操作的脚本语言”如何能访问自动化接口IDispatch?也就肯定访问不了IDispatch接口的invoke函数,客户怎么能够通过invoke访问属性或方法呢?
二、引用《COM原理与应用》书中一句话:“用MFC库的CCmdTarget类来实现IDispatch接口并没有用到类型库,IDispatch实现是靠分发映射表驱动的,而不是由类型库驱动的”,这是否意味着,在运行时可以不必存在类型库文件?如果不存在类型库文件,脚本语言客户端如何能通过GetIDsOfNames获取分发ID?
三、VB支持指针操作吗?
解决方案1:
三、VB支持指针操作吗?
============================
不支持,但是如果你够强的话,可以用hack的方法让它支持
二、引用《COM原理与应用》书中一句话:“用MFC库的CCmdTarget类来实现IDispatch接口并没有用到类型库,IDispatch实现是靠分发映射表驱动的,而不是由类型库驱动的”,这是否意味着,在运行时可以不必存在类型库文件?如果不存在类型库文件,脚本语言客户端如何能通过GetIDsOfNames获取分发ID?
================
难道不存在类型库该方法就无法实现了??
mfc的那些宏能够把该接口的信息建成一个表放在内存中,而MFC实现GetIDsOfNames这个方法的时候只需在内存中的那张表里检索指定的信息就OK了.
一、自动化对象的IDispatch接口是以vtable的形式来表示的,“不支持指针操作的脚本语言”如何能访问自动化接口IDispatch?也就肯定访问不了IDispatch接口的invoke函数,客户怎么能够通过invoke访问属性或方法呢?
===================
你得明白脚本引擎是干啥吃饭的!!!
调用IDispatch.invoke是脚本引擎的活,而不是脚本的活