更改COM对象的行为

时间:2015-08-07 12:07:55

标签: c# .net com hook code-generation

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

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

我的一种方法是挂钩COM调用,但我已经与此进行了很多争吵(例如,我可以拦截一些调用,但是当从钩子函数返回时,似乎只接收到空值),所以我想知道我是否能够"模拟"图书馆。

换句话说,是否有一些我可以使用的工具将分析库(如VS对象浏览器)并生成所需的所有存根,以便我可以改变它的通信方式并自行填充所有属性和自己实施所有方法?或者任何其他想法来解决问题?

干杯

1 个答案:

答案 0 :(得分:1)

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

在此之后不确定您在现有DLL中的位置 - 是否可以重新生成GUID?