使用 #import "c:\winnt\system32\tlbinf32.dll" 导入TypeLib information库,该库提供了类来获取一个 active dll中的所有coclass,interface, function, paraments等信息。如果不足道该如何 使用,可以先在VB中做实验。 1 在Project的引用中增加对 TypeLib ,information 库的引用 2 下面是一段示例代码:显示所有的coclass Dim TLInfo As TypeLibInfo Set TLInfo = TLI.TypeLibInfoFromFile( "c:\temp\Your.dll") With TLInfo.CoClasses For i = 1 To .Count msgbox .Item(i).name Next End With '显示第一个CoClass的所有接口 With TLInfo.CoClasses.Item(1).interfaces For i = 1 To .Count msgbox .Item(i).name Next End With '显示第一个CoClass的第一个接口的的所有函数 With TLInfo.CoClasses.Item(1).interfaces(1).members For i = 1 To .Count msgbox .Item(i).name Next End With
使用,可以先在VB中做实验。
1 在Project的引用中增加对 TypeLib ,information 库的引用
2 下面是一段示例代码:显示所有的coclass
Dim TLInfo As TypeLibInfo
Set TLInfo = TLI.TypeLibInfoFromFile( "c:\temp\Your.dll")
With TLInfo.CoClasses
For i = 1 To .Count
msgbox .Item(i).name
Next
End With
'显示第一个CoClass的所有接口
With TLInfo.CoClasses.Item(1).interfaces
For i = 1 To .Count
msgbox .Item(i).name
Next
End With '显示第一个CoClass的第一个接口的的所有函数
With TLInfo.CoClasses.Item(1).interfaces(1).members
For i = 1 To .Count
msgbox .Item(i).name
Next
End With
GetTypeInfoCount 得到类型信息的数量
GetTypeInfo 得到第N 个类型信息可以这样说,只要是一个自动化对象,使用 上述的函数就可以得到该接口的函数,属性信息,并可以用IDispatch::Invoke来调用这些函数。比如下面的代码:dim a
set a=createObject("testdll.testobj")
a.func1 1,2上述的一段 vb script 代码,它的内部处理可以看成是这样的。
首先创建一个testobj对象,然后用 GetTypeInfo 查询对象是否存在
函数 "func1" ,然后在查询该函数的参数信息,最后将 1, 2 放到一个
DISPPARAMS 中,调用函数 Invoke 执行实际的操作。可以这样说: 所有的自动化对象的函数的调用都可以通过查询,拼装参数,
调用 Invoke 来完成的。