2016-08-23 5 views
0

Если я знаю имя сервера автоматизации OLE (как найдено в HKEY_CLASSES_ROOT), есть ли способ запросить все доступные объекты, их методы и свойства, даже если сервер не поддерживает ранние привязка и, следовательно, не может быть найдена в обозревателе объектов?Список всех объектов сервера автоматизации OLE

Если да, не могли бы вы предоставить несколько строк кода (предпочитаете VB, но на самом деле неважно), как это сделать?

ответ

1

Вы можете, если на сервере имеется Type Library (.TLB file). В противном случае нет способа.

Вы можете найти TLB идентификатор (это также справ) ссылка, если он существует в качестве значения по умолчанию ключа TypeLib реестра, здесь:

HKCR\CLSID\<your CLSID>\TypeLib 

А потом, точки идентификаторов TYPELIB в

HKCR\TypeLib\<tlb id> 

В котором вы можете найти путь TLB в ключах внизу (в зависимости от архитектуры это может быть разница на x86 или x64).

Например, вот путь к 2.6 (объекты данных ActiveX) стандартного Адо типа библиотеки:

enter image description here

После того, как у вас есть TLB, вы можете использовать API СОМ, чтобы просмотреть его. Это нормально с C++ или с родными клиентами, но для таких клиентов автоматизации, как VB, VBScript и т. Д., Эта DLL-библиотека «tlbinf32.dll» позволила вам это сделать. Вот ссылка, которая говорит об этом: Accessing Type Libraries from VB

+0

Спасибо за разъяснение этого. Я правильно ли понимаю, что если существует сервер автоматизации, всегда есть TLB, который разработчик мог бы решить не отправлять (каждому)? – vic

+0

Не всегда, поскольку это не так уж необходимо, COM на самом низком уровне - это просто двоичный контракт VTable, который совместно используется сервером и клиентом, но большую часть времени, потому что это инструмент (например, MIDL). –