c# - 在我的 .NET 应用程序中添加一个函数作为另一个 .NET 应用程序中的事件处理程序

标签 c# .net interop event-handling hook

我们有一个 .net 应用程序,我们没有开发但使用它。我可以使用反射器告诉我,该应用程序有 1) 表单主表单中有一个静态变量,它是对“主”表单的引用,2) 有一个被触发的事件,我希望能够根据该事件采取操作。

我知道如果它在我的应用程序中我会做什么 (mainForm.DefaultInstance.OnAlarm += myAlarmHandler;) - 即使它不在我的应用程序中,是否可以执行此操作?如果有帮助的话,我想与之交互的应用程序只能有一个实例。

此外,如果我可以做到这一点,是否可以调用该应用程序中的其他方法,就好像应用程序本身触发了它们(特别是单击方法上的按钮)并设置 winform 文本框的文本?

感谢您对此提供的任何帮助!

最佳答案

您可能需要查看 PostSharp,因为它可以通过在运行时编织新的方面来帮助您进行此修改。

http://www.postsharp.org/aop-net/runtime-weaving

好的一点是,当您进行试验时,您不会更改驱动器上的程序,因为所有更改都会在加载程序集时发生。

问题是您可能会违反您的许可协议(protocol),因为禁止对其程序进行任何更改,因此您可能需要与您公司的律师讨论此事。

如果您可以将一个方面注入(inject)到程序中,那么它需要调用您的程序(也许作为 Web 服务调用)来传递信息,除非您只是希望它在事件发生时启动您的程序,传入某些参数。

我还没有尝试过这个,因为我倾向于不喜欢运行时编织,并且在我对这个工具进行更多实验之前正在等待 PostSharp 2.0,尽管我在 Java 上广泛使用了 AspectJ。

关于c# - 在我的 .NET 应用程序中添加一个函数作为另一个 .NET 应用程序中的事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1652565/

相关文章:

c# - 从不同的线程启动/停止 DispatcherTimer

c# - 使用paint时如何在WinForms中实现垂直和水平滚动条?

c# - TextBox 控件使用什么事件来在按下 enter 时发出文本更改信号?

c# - 移植 C# 代码以在 OSX 上运行

c# - 将 Windows 窗体值发送到 wpf 控件以更新位于 wpf 控件中的属性。

C# C++ 互操作回调

c# - 如果值已更改 C#,则将参数从文本框发送到存储过程

c# - 为什么这个ajax调用失败了?

c# - 如何制作类(class)的只读版本?

javascript - Dart polymer Google Picker