c++ - 将 CoCreateInstance 重定向到假实现

标签 c++ winapi com

鉴于一些现有代码调用 CoCreateInstance 来创建已注册 COM 对象的实例,是否有一种方法可以重定向这些调用以创建不同的实例?

想法是在同一个进程中(出于测试目的),在不改变原始代码或影响任何其他进程的情况下,当它请求系统提供的CLSID_ShellLink(例如)时,它将创建实现相同接口(interface)的自定义类型(在相同代码库中实现)的实例,而不是它通常创建的“真实”实例。

为了澄清:我正在寻找一个 API 调用,它可以说“嘿 CoCreateInstance,在查看注册之前首先调用这个本地的东西来创建一个实例”。而且它必须是可以通过编程方式完成的事情,而不是通过操作注册表或配置文件;它需要在代码中切换。

最佳答案

如果您正在创建的对象正在处理中,并且如果您可以在您正在谈论的过程中调用 CoRegisterClassObject,则可以为特定对象注册您自己的类工厂...还取决于调用 CoCreateInstance 时使用的标志.

关于c++ - 将 CoCreateInstance 重定向到假实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56437191/

相关文章:

c++ - 在索引 0 为 0 的数组中查找非零最小值 C++

c++ - 在 Node.js 插件的 void * 中检索和存储 V8 对象

c++ - 为了使用 winapi 显示推文,我可以选择什么最佳控件?

.net - 使用 ClassInterfaceType.AutoDual 真的是个坏主意,即使使用 VB6?

c# - 未从 C# 中找到 C++ COM DLL 中的导出函数

vb.net - 将 COM 组件引用添加到 VB.NET 项目时出现问题

c++ - 如何让它同步运行?

c++ - 前向声明?包括守卫?或其他什么?

c++ - 从证书中获取 "Key Usage"

c++ - 从 Windows 服务启动子进程