更改 COM 对象的行为

Changing the behavior of a COM object

我有一个可以通过 COM 使用的有点复杂的库 (something.dll)。该库不受管理。除此之外,这个库连接到一个系统并允许我与之通信。

我有很多使用此库的 .NET(托管)应用程序。由于该库与系统通信的方式已被弃用,我想在不接触 .NET 应用程序的情况下更改该库的行为。

我的方法之一是挂钩 COM 调用,但我对此有过很多争论(例如,我可以拦截一些调用,但从挂钩函数返回时似乎只收到空值),所以我想知道我是否可以 "mock" 图书馆。

换句话说,有没有我可以使用的工具来分析库(比如 VS 对象浏览器)并生成所有需要的存根,这样我就可以改变它的通信方式并自己填充所有属性并自己实现所有方法?或者任何其他解决问题的想法?

干杯

您可以尝试创建一个包含实例化 COM 对象的 class 的新项目。将其公开给具有相同 GUID 的 COM。然后您只需根据需要更改和公开方法并部署新的 DLL。

不确定在那之后您对现有 DLL 的看法 - 它的 GUID 可以重新生成吗?