2012-08-10 29 views
0

我试图使用COM对象方式如下:方法列表

Dim l 
l = CreateObject("tst.Ax") 
Dim err As Long 
Dim st As ULong 

Try 

    l.AX_hdr(st, err) 

    Catch ex As Exception 
    MsgBox(ex.Message) 
End Try 

而且我有错误

TYPE_E_ELEMENTNOTFOUND 

的CreateObject工作正常,因为这个COM对象时执行一些代码初始化(显示消息框)。对象应该有方法AX_hdr,但我不知道它为什么找不到它。还有什么可能是错的?是否有任何方法如何从COM对象中检索功能列表?

+1

当您使用延迟绑定时,您需要具备良好的文档以了解COM服务器实现了哪些方法和属性。 COM不支持Reflection。联系组件的所有者或作者。 – 2012-08-10 14:07:02

回答

2

如果add a reference你的COM组件,您可以使用早期绑定实例化对象:

Dim l as new tst.Ax 

这样您就可以智能感知所有的方法和组件的属性,或者您可以按F2键做使用Object Browser进行搜索。

如果您愿意,您可以随时在以后的日期删除该引用,但early binding is usually preferable。如果你有很好的理由,或者没有其他选择,我只会使用后期绑定。

+0

我已经将'tst.Ax'添加到引用中,并声明'Dim l as new tst.Ax'。但是当我在'l'变量后面按下点时,我从5个方法中选择了 - Equals,GetHashCode,GetType,ReferenceEquals,ToString'。这是相同的,如果我做声明'Dim l as new nonExistingObject' – vico 2012-08-10 15:27:41

+0

'Dim l as new nonExistingObject' will not compile,so I do not know how you can see any methods for it!所以我的猜测是你没有正确地声明你的对象。使用对象浏览器和/或查阅组件的文档。 – 2012-08-10 15:38:23