1

我不知道怎么会问这个问题,但我想知道是否有一种方法可以访问纯粹用 .Net 编写的正在运行的进程并与其内存空间和活动对象进行交互。

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

对我要问的问题进行不同的解释...基本上,有没有办法使用 system.diagnostics.processmodule 并获取具有特定名称的正在运行的进程,然后将其实例化为应用程序,然后进行挖掘进入它以找到一个特定的静态对象,并使用它?

- - 额外的 - -

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

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

4

5 回答 5

1

查找.NET 远程处理

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

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

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

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

于 2009-02-19T22:25:40.390 回答
0

另一种选择是,如果您不需要实际更改内容而是纯粹寻找统计信息,则可以创建一些自定义性能计数器,然后使用另一个应用程序监控这些计数器。 监控性能阈值

于 2009-02-19T22:33:43.287 回答
0

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

System.AddIn

您需要添加对 dll 的引用(仅在 .net 3.5 中可用)。你可以使用这个类来开发一个类型安全的插件架构,它支持版本控制和外部代码的隔离。

在 MSDN 上查看一些示例。

于 2009-02-19T22:46:51.527 回答
0

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

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

于 2009-02-20T00:38:42.660 回答
-1

很容易,没有。

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

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

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

于 2009-02-19T22:21:42.943 回答