COM Object 与 Automation Object的区别??(100分)

  • 主题发起人 主题发起人 darkiss
  • 开始时间 开始时间
D

darkiss

Unregistered / Unconfirmed
GUEST, unregistred user!
写了一个测试的ActiveX Libery.加入几个com object 和Automation Object,编译、注册
完后,在VB中用CreateObject创建对象,对于Automation Object是可以成功创建并使用的,
对于Com Object就不能创建。为什么???请给个详细点的说明。谢谢。
 
Automation Object 从COM Object 继承并实现 IDispatch 接口,IDispatch 当初就是为了
VB所编写的,VB无法直接的使用COM(或者很难,不清楚,没有用过VB[:)]),所以产生了
Automation对象,具体我也不是非常清楚,我想,可能的理由是使用Automation Object可以
保证通用性,而且使用 Automation 对象可以不建立一个对象而访问COM接口[?]

比如下面典型的Automation Object调用,是IE Automation Object,(VB俺的不会)

IEApp: Variant;
IEApp := CreateOLEObject('InternetExplorer.Application');
IEApp.Navigate('http://www.sina.com.cn');

创建的 IEApp 并不是一个对象,这个冬冬使用 IDispatch 接口来调用COM对象的方法。Right?
 
http://www.delphibbs.com/delphibbs/DispQ.asp?LID=420919
 
多人接受答案了。
 
CreateOLEObject创建的variant类型变量,运行期才通过IDispatch接口进行方法调用,所以没有Code Insight,开发效率、运行效率都要差一点。(IDispatch接口是为适合Automation技术开发的,比COM更高级,更抽象)????????
这是真的吗???
那用那一种方法会更好????
 
后退
顶部