列出 OLE 自动化服务器的所有对象
List all objects of an OLE automation server
如果我知道 OLE 自动化服务器的名称(在 HKEY_CLASSES_ROOT 下找到),即使服务器不支持早期绑定和因此在对象浏览器中找不到?
如果是,能否请您提供几行代码(更喜欢 VB 但真的无所谓)如何做到这一点?
如果服务器有 Type Library (.TLB file) 关联,则可以。不然没办法。
如果 TLB id(它也是一个 guid)引用作为注册表项 TypeLib 的默认值存在,您可以在此处找到它:
HKCR\CLSID\<your CLSID>\TypeLib
然后,TypeLib id 指向
HKCR\TypeLib\<tlb id>
您可以在下面的键中找到 TLB 路径(根据体系结构,在 x86 或 x64 上可能有所不同)。
例如,这里是标准 ADO 的 2.6(ActiveX 数据对象)类型库的路径:
一旦有了 TLB,就可以使用 COM 的 API 来浏览它。这对于 C++ 或本机客户端来说没问题,但对于 VB、VBScript 等自动化客户端,有这个 DLL "tlbinf32.dll" 允许您执行此操作。这是谈论它的link:Accessing Type Libraries from VB
如果我知道 OLE 自动化服务器的名称(在 HKEY_CLASSES_ROOT 下找到),即使服务器不支持早期绑定和因此在对象浏览器中找不到?
如果是,能否请您提供几行代码(更喜欢 VB 但真的无所谓)如何做到这一点?
如果服务器有 Type Library (.TLB file) 关联,则可以。不然没办法。
如果 TLB id(它也是一个 guid)引用作为注册表项 TypeLib 的默认值存在,您可以在此处找到它:
HKCR\CLSID\<your CLSID>\TypeLib
然后,TypeLib id 指向
HKCR\TypeLib\<tlb id>
您可以在下面的键中找到 TLB 路径(根据体系结构,在 x86 或 x64 上可能有所不同)。
例如,这里是标准 ADO 的 2.6(ActiveX 数据对象)类型库的路径:
一旦有了 TLB,就可以使用 COM 的 API 来浏览它。这对于 C++ 或本机客户端来说没问题,但对于 VB、VBScript 等自动化客户端,有这个 DLL "tlbinf32.dll" 允许您执行此操作。这是谈论它的link:Accessing Type Libraries from VB