3

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

// TLib : // TLib : OLE 自动化 : {00020430-0000-0000-C000-000000000046} importlib("stdole2.tlb"); // TLib:Visual Basic 运行时对象和过程:{EA544A21-C82D-11D1-A3E4-00A0C90AEA82} importlib("3");

我尝试使用 TypeLibInfoFromFile 提取相同的信息,但根据我在 MSDN 中找到的信息,没有提供此信息的 Api。您是否知道从 OCX 或其 Tlb 文件中提取此信息的方法?知道我所有的 ocxes 都是用 vb6 编译的,我可以相信 Imported(Explicitly not in code) 接口的这个信息吗?

4

1 回答 1

2

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

这种方法的问题在于,您只能找到公共接口中使用的类型(字段、返回值和参数),而您错过了每个本地对象或动态创建的对象。也就是说,您可以检查此链接以获取实现或更好的实现

于 2011-04-03T22:47:34.160 回答