gpt4 book ai didi

c++ - 如何在不知道 IID 的情况下创建 CLSID 的 COM 对象实例

转载 作者:太空狗 更新时间:2023-10-29 23:42:18 30 4
gpt4 key购买 nike

如何在不知道它实现的任何接口(interface)的情况下通过类的 CLSID 创建类的实例。

例如,CLSID "{3ad05575-8857-4850-9277-11b85bdb8e09}" 实现了一个派生自 IFileOperation 的类(在 Windows 7 中),但如果我不知道它是从它派生的,有没有办法创建这样的对象或者至少找出这个 CLSID 实现了哪些接口(interface)?

谢谢! :-)

最佳答案

David 是对的,您可以随时请求 IUnknown。但是你会从那里碰壁,如果你不知道 IID,COM​​ 不会提供一种方法来发现除此之外的已实现接口(interface)。鉴于 GUID 值的可能数量,没有实用的方法来“尝试所有”。它也没有多大意义,如果你偶然猜对了一个 IID,你仍然不知道如何正确调用接口(interface)方法。你不知道它需要什么参数,你不知道它做了什么。当心 IFormatDiskDrive。

与自动化兼容的服务器通常会提供一个类型库。您可以从中挖掘接口(interface)。不是你曾经做过,而是让你的编译器进行挖掘。

但是对于基于 IUnknown 的 shell 接口(interface),因此不实现自动化(如 IFileOperation),您必须预先知道要使用什么。不妨立即将该 IID 传递给 CoCreateInstance。

关于c++ - 如何在不知道 IID 的情况下创建 CLSID 的 COM 对象实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5022895/

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