我确信没有办法找到 ActiveX 的 COM 依赖关系,但令我惊讶的是 OLEVIEW 显示了一些评论,例如:
//TLib ://TLib : OLE 自动化 : {00020430-0000-0000-C000-000000000046} importlib("stdole2.tlb"); //TLib:Visual Basic 运行时对象和过程:{EA544A21-C82D-11D1-A3E4-00A0C90AEA82} 导入库("3");
我尝试使用 TypeLibInfoFromFile 提取相同的信息,但根据我在 MSDN 中找到的内容,没有提供此信息的 Api。您知道从 OCX 或其 Tlb 文件中提取此信息的方法吗?知道我所有的 ocxes 都是用 vb6 编译的,我可以相信这个关于导入(明确不在代码中)接口(interface)的信息吗?
最佳答案
好吧,我找到了这个问题的答案。我会写在这里以防万一有人搜索相同的问题。可以找到一些依赖项,但您永远无法确定是否已找到所有依赖项。基本上,您必须枚举每种类型和接口(interface),以及每种类型的每个成员以查找模块中的所有类型,对于您找到的每种类型,您应该检查它是否在外部类型库中。最后你有一个引用的类型库列表。
此方法的问题在于您只能找到在公共(public)接口(interface)(字段、返回值和参数)中使用的类型,而您错过了每个本地对象或动态创建的对象。那就是说您可以查看此链接以获取 implementation或者更好this one .
关于com - 如何从 OCX 或 TLB 文件中获取导入的类型库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4035698/