Как я могу обнаружить все интерфейсы, которые реализует COM-объект?

Я просто хотел упомянуть, что веб-приложение с помощью плагина Механизмов может использовать Геолокация забастовка> ( Больше Avaliable) (GPS и службы определения местоположения Wi-Fi), и это работает над Android (браузер на поставках G1 со встроенной поддержкой Механизмов).

я не уверен, существует ли надежда на получение поддержки механизмов на iPhone, но это - другой полезный подход к созданию веб-приложений с дополнительными функциями, все еще имея широкую досягаемость устройств.

7
задан sharptooth 18 November 2009 в 14:40
поделиться

3 ответа

Вы можете попробовать IDispatch / IDispatchEx, если просто хотите знать, какие методы вызываются у вашего потребителя.

В COM метод QueryInterface в IUnknown не требуется, чтобы отображать интерфейсы, которые он может возвращать. Вы просите один на основе его IID, и вы либо получаете, либо нет. Реализация QI в конкретном COM-объекте значительно различается, хотя предполагается, что она следует шаблону, описанному здесь Microsoft - http://msdn.microsoft.com/en-us/library/ms682521%28VS.85%29. aspx .

2
ответ дан 7 December 2019 в 12:21
поделиться

Dependency Walker может сделать эту работу за вас ...

http://theircorp.byethost11.com/index.php?vw=TypeLib - это бесплатный инструмент для проверки файлов TBL.

1
ответ дан 7 December 2019 в 12:21
поделиться

Dependency Walker не будет отображать интерфейсы, поскольку единственными экспортируемыми объектами являются DllGetClassObject, DllRegisterServer и т. Д. (Для COM, размещенного в DLL).

Вы можете, как говорит weismat, проверять файлы TLB . Многие COM-объекты содержат встроенные библиотеки типов в разделе ресурсов исполняемого файла. С помощью такого инструмента, как взломщик ресурсов, вы можете извлекать TLB и использовать COM-функции LoadTypeLib для получения указателя на интерфейс ITypeLib (конечно, вы можете использовать LoadTypeLib / LoadTypeLibEx напрямую с COM- или EXE-DLL).

С этим интерфейсом вы можете может перебирать типы, содержащиеся внутри.

2
ответ дан 7 December 2019 в 12:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: