是否可以“附加”到另一个C#dll的方法(没有该dll的源代码)?我的意思是,如果机器上有另一个程序使用该DLL并调用所述方法,我将在我的程序中获得一个事件。
我在使用c#编写的现有应用程序中添加功能时出现问题,我没有源代码。我需要一个额外的表单,当调用程序中的特定方法时会弹出。
程序连接到另一台计算机上的MS SQL数据库。我还在考虑在服务器上创建一个SQL触发器,它会以某种方式与计算机连接并发送某种信号以触发其他形式,但这种情况很糟糕。
[编辑] 或者,我可以在机器上侦听SQL流量吗?如果我发现一个SQL程序的调用伴随着我的程序将采取的dll方法吗?但这不会影响绩效吗?
答案 0 :(得分:1)
它没有很好的文档记录,我自己仍在试图弄清楚它是如何工作的,但是这里有一个用于挂钩DLL的c#解决方案:EasyHook
答案 1 :(得分:1)
您要执行的操作的术语是Dll Injection。这是关于如何在注入的dll中运行.net代码的tutorial。如果你想要做一个关于做DLL拒绝的介绍,同一个人有一个非常好的第一个定时器教程叫做“How do I build a working poker bot”。这是非常彻底和非常简单的理解。
答案 2 :(得分:0)
如果在“其他”dll中满足某些条件,这是合理的。
然后,您可以创建一个委托并将该委托分配给您选择的方法。
看起来像是:
var other = OtherDLL.getInstance(InstanceID);
other.DidSomething += new EventHandler(myDelegate);
// the += is important so that you are adding your delegate to the existing calls for that method..
//Where you have:
protected myDelegate(Object sender, EventArgs e)
{
// do what you want...
}
如果公共挂钩不可用,则无法执行此操作。