连接到.Net软件程序并进行交互

时间:2009-02-19 22:16:12

标签: .net interop add-on

我不确定如何问这个问题,但是我想弄清楚是否有可能通过这种方式访问​​纯粹在.Net中编写并与其内存空间交互的正在运行的进程活动对象。

我为2个销售点软件包进行插件开发,并试图在外部窗口中分析数据输入。任何信息或见解将不胜感激。

对我要问的内容进行不同的调整...基本上,是否有一种方法可能使用system.diagnostics.processmodule并获取具有特定名称的正在运行的进程,然后将其实例化为应用程序,然后挖掘它以找到一个特定的静态对象,并使用它?

----补充----

我注意到有人提到过反思......这确实可能是我想要问的......我唯一需要的就是“反思”一个过程,找到一个特定的静态类,然后转换它类到“对象”,所以我可以访问它的属性...也许这更有意义。

不幸的是,我正在尝试使用的程序在一段时间内不会有任何形式的插件架构,并且认为我可以使用某种疯狂的P / Invoke或反射思想来实现它。 / p>

5 个答案:

答案 0 :(得分:1)

查找.NET remoting

简单地说,您可以创建一个窗口服务或控制台应用程序来创建一个对象,一个您创建的自定义对象。然后,您可以在TCP端口上注册。

然后你有一个客户端服务器,可以访问相同的TCP端口,甚至可以在2个不同的PC上,并与对象进行交互。

这样做的方法是创建一个客户端对象知道并且服务器实现的接口。

您可以让2个控制台应用程序相互通信。这是一个question关于如何做到这一点,它不完全正确,但应该让你指向正确的方向。

答案 1 :(得分:0)

另一种选择,如果你不需要实际改变东西,而是纯粹寻找统计数据,那就是创建一些自定义性能计数器,然后用另一个应用程序监视它们。 Monitoring Performance Thresholds

答案 2 :(得分:0)

.net中有一个专门为此设计的命名空间,

System.AddIn

您需要添加对dll的引用(仅在.net 3.5中可用)。您可以使用此类开发类型安全插件体系结构,该体系结构支持外部代码的版本控制和隔离。

在MSDN上查看一些示例。

答案 3 :(得分:0)

不确定它是否会完全符合您的要求,但Hawkeye会让您检查&如果它是您正在处理的Windows应用程序,则在运行时调整.NET对象:

http://www.acorns.com.au/Projects/Hawkeye/

答案 4 :(得分:-1)

很容易,没有。

但是可以自动化WinDBG(或其命令行版本),以及可能的.NET SOS扩展库。

从根本上说,您需要一个专为可扩展性/插件/自动化而设计的应用程序。

另一种可能性是利用.exe与.dll几乎相同的事实,并且有一个应用程序加载exe,好像它是一个类库,然后启动它。然后可以反思。