gpt4 book ai didi

c++ - 如何从 ProgID 或 CLSID 获取类型库(不加载 COM 对象)?

转载 作者:可可西里 更新时间:2023-11-01 18:39:14 26 4
gpt4 key购买 nike

在给定类型库中包含的 COM 类的 ProgID 或 CLSID 的情况下,如何以编程方式获取类型库的路径或 LIBID,而不实例化 COM 对象?

对于某些 COM 对象,您可以通过注册表路径实现

HKEY_CLASSES_ROOT\CLSID\{clsid}\TypeLib

但是有些COM对象没有TypeLib键,比如Word.Application:

enter image description here

如何在不实例化 COM 对象的情况下确定这些 COM 对象的类型库路径或 LIBID?

最佳答案

类型库可能与给定的 CLSID 相关联,也可能不相关联。如果您在注册表中没有类型库引用,您可能更幸运地在运行时使用 IDispatch::GetTypeInfo 获取它。

没有类型库(或注册类型库)的 COM 类仍然是有效的 COM 类,因此您最终可能会在没有类型库的情况下很好地运行和使用它。

您还有一个机会是找到托管 COM 服务器的二进制文件,无论它是 .EXE.DLL 还是 .OCX,并尝试从其资源(通常在标识符 1 下)加载类型库。通常,类型库就在那里。

关于c++ - 如何从 ProgID 或 CLSID 获取类型库(不加载 COM 对象)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12975329/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com