Skip to content

CallByDispId

在运行时通过原始IDispatch调度ID查找并调用对象上的方法,或读取或写入属性。CallByDispId是twinBASIC新增项;按名称变体CallByName在VBA中也存在。

语法:CallByDispId( object , dispid , calltype [ , args ... ] )

object
必需 Object。要调用其成员的对象。
dispid
必需 Long。要调用的方法或属性的IDispatch调度ID(DISPID)。
calltype
必需 VbCallType值,指示成员类型:vbMethodvbGetvbLetvbSet
args
可选 传给方法、Property GetProperty LetProperty Set的参数。

返回值是一个Variant,包含调用返回的任何内容。对于不返回值的方法或属性赋值,结果为Empty

CallByDispId跳过了CallByName执行的名称查找,这在两种情况下很有用:当调度ID已知且应避免GetIDsOfNames往返开销时,以及当目标成员不按名称公开时(例如具有DISPID_VALUE = 0的默认成员、显式DISPID扩展或隐藏/受限成员)。

示例

本示例通过调度ID调用对象的默认成员——DISPID_VALUE,定义为0。

vb
Const DISPID_VALUE As Long = 0

Dim Result As Variant
Result = CallByDispId(SomeObject, DISPID_VALUE, vbGet)

另请参阅

twinBASIC及其LOGO版权为作者"韦恩"所有