CallByDispId
在运行时通过原始IDispatch调度ID查找并调用对象上的方法,或读取或写入属性。CallByDispId是twinBASIC新增项;按名称变体CallByName在VBA中也存在。
语法:CallByDispId( object , dispid , calltype [ , args ... ] )
- object
- 必需 Object。要调用其成员的对象。
- dispid
- 必需 Long。要调用的方法或属性的IDispatch调度ID(
DISPID)。 - calltype
- 必需 VbCallType值,指示成员类型:
vbMethod、vbGet、vbLet或vbSet。 - args
- 可选 传给方法、Property Get、Property Let或Property 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)