如何从OCX或TLB文件中获取导入的类型库?

时间:2010-10-27 16:59:07

标签: com import idl tlb

我确信无法找到ActiveX的COM依赖项,但令我惊讶的是OLEVIEW显示了一些评论,如:

// TLib:// TLib:OLE自动化:{00020430-0000-0000-C000-000000000046}     导入库( “STDOLE2.TLB”); // TLib:Visual Basic运行时对象和过程:{EA544A21-C82D-11D1-A3E4-00A0C90AEA82}     导入库( “3”);

我尝试使用TypeLibInfoFromFile提取相同的信息,但根据我在MSDN中找到的内容,没有提供此信息的Api。您是否了解从OCX或Tlb文件中提取此信息的方法?知道我的所有ocx都是用vb6编译的,我可以相信这个信息用于导入(显式不在代码中)接口吗?

1 个答案:

答案 0 :(得分:1)

好吧,我找到了这个问题的答案。我会在这里写,以防万一有人会搜索相同的问题。可以找到一些依赖关系,但你永远不能确定你是否找到了它们。基本上,您必须枚举每个类型和接口,并且每种类型的每个成员都要查找模块中的所有类型,并且对于您找到的每种类型,您应该检查它是否在外部TypeLib中。最后你有一个引用的Typelib列表。

此方法的问题在于,您只找到公共接口中使用的类型(字段,返回值和参数),并且您错过了每个本地对象或动态创建的对象。也就是说,您可以查看implementation或更好this one的此链接。