gpt4 book ai didi

c++ - 如何枚举实现特定 COM 接口(interface)的所有组件类?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:57:42 25 4
gpt4 key购买 nike

我会尽量简单的描述问题;

假设我们有一个定义了多个接口(interface)的 com 客户端。

为了改进我们的 com 客户端的功能;几个独立的公司开发和部署实现该接口(interface)的 com 服务器。目标机器可能具有实现相同接口(interface)的 com 服务器。

问题来了;

我们的 com 客户端不知道目标机器上的 com 服务器,因为它们是独立开发的。但是,我们仍然可以要求独立公司遵循特定的安装程序。

问题来了;

我们应该使用什么样的技术来找出目标机器上部署的所有兼容的com服务器,然后实例化所需的对象?

最佳答案

据我所知,没有标准的 COM 编目服务,尽管 COM+ 可能有一些服务。查看 HKCR\Component Categories,您会找到组件类型的 GUID。如 0DE86A57-2BAA-11CF-A229-00AA003D7352,描述为“类实现 IPersistPropertyBag”。 coclass 在其 CLSID\{guid}\Implemented Categories 中声明了相同的 guid。这似乎很适合您的场景。

您必须选择一个 guid 并将其告知组件作者。他们必须使用安装程序编写已实现的类别 key 。

通过 CLSID 键仍然是一个相当笨拙的过程,您不希望经常这样做。但至少您不必加载 DLL 来发现接口(interface),那可能会产生各种令人讨厌的副作用。我建议在您的选项菜单中添加一个对话框,让用户开始扫描和选择,这也是禁用行为不当组件的好方法。

顺便说一句,这可能导致的支持问题通常会使应用程序从“批准”列表中运行。

关于c++ - 如何枚举实现特定 COM 接口(interface)的所有组件类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4433244/

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