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

标签 com import idl tlb

我确信没有办法找到 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/

相关文章:

windows - 为什么我的 COM 工厂在程序生命周期内从未被释放?

c# - 如何使用 C#/IHTMLDocument2 设置文本字段的值

python - "library"方法的范围

javascript - 是否可以使用 TypeScript 将 HTML 文件作为字符串导入?

c++ - 在 C++/WRL 中使用静态方法创建 WinRT 组件

winapi - 如何调用 MIDL 编译器从 .IDL 文件生成 .TLB 文件(类型库)?

c++ - 如何开始 bho(浏览器帮助对象)编程

javascript - 如何在php中的header中设置目录

java - 如何在 Java 服务器和 C++ 客户端之间创建 CORBA?

plugins - 使用 IDL 方法开发浏览器插件的教程。