Как получить импортированные библиотеки типов из файла OCX или TLB? - PullRequest
2 голосов
/ 27 октября 2010

Я был убежден, что нет способа найти COM-зависимости ActiveX, но, к моему удивлению, OLEVIEW показывает некоторые комментарии, такие как:

// TLib: // TLib: OLE Automation: {00020430-0000-0000-C000-000000000046} importlib ( "Stdole2.tlb"); // TLib: объекты и процедуры среды выполнения Visual Basic: {EA544A21-C82D-11D1-A3E4-00A0C90AEA82} importlib ( "3");

Я пытался извлечь ту же информацию, используя TypeLibInfoFromFile, но, исходя из того, что я нахожу в MSDN, нет API, предоставляющего эту информацию. Вам известен метод извлечения этой информации из OCX или его файла Tlb? Зная, что все мои циклы скомпилированы с vb6, могу ли я доверять этой информации для импортированных (явно не в коде) интерфейсов?

1 Ответ

1 голос
/ 04 апреля 2011

Ну, я нашел ответ на этот вопрос.Я напишу это здесь на всякий случай, если кто-то будет искать тот же вопрос.Можно найти некоторые зависимости, но вы никогда не сможете быть уверены, что нашли их все.По сути, вы должны перечислять каждый тип и интерфейс, а также каждый член каждого типа, чтобы найти все типы в модуле и для каждого типа, который вы найдете, вы должны проверить, находится ли он во внешней TypeLib.в конце концов у вас есть список ссылок на Typelibs.

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

...