如何实现进程注入后访问组件对象的方法

崔作非 2013-11-20 05:09:44
再发贴求助诸位大侠:
ManagedSpy通过实现ICustomTypeDescriptor接口,不过只能读写组件实例的属性,不能访问方法。
ObjectSpy利用反射的InvokeMember方法,只能实现对类的静态方法的访问,非静态的方法要先建实例后才行,不过建立后就不是想要用的当前对象了,同样不能实现访问非静态方法。
上述两种实现都用到序列化的,窗口是不能序列化的,不知道有什么更好的方法实现跨进程的对象通信。
先谢谢大家。

...全文
221 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
崔作非 2013-11-22
  • 打赏
  • 举报
回复
非.net的方案也可以,我到时再参考着改一下,这方面的东东实在太少了。
崔作非 2013-11-21
  • 打赏
  • 举报
回复
组件对象好像也是建在托管堆上的,能否有得到组件对象的途径,从而调用组件实例的方法,网上的很多贴子都是访问静态方法的,没有找到非静态方法的实现。
崔作非 2013-11-20
  • 打赏
  • 举报
回复
被调用程序不是我的,WCF也可以支持? 我现在的方法是在目标进程内执行的,是执行完后把方法的返回结果先序列化到共享内存,再我的程序中再从共享内存中反序列化回来的,这个处理静态方法没有问题,但非静态不行,InvokeMember需要传一个实例参数,但我不知道怎么在进程注入后得到目标程序集中的那个对象。 ICustomTypeDescriptor接口中的GetComponentName可以得到实例的名称,但这个接口好像没有办法得到实例本身或实例的引用。
devmiao 2013-11-20
  • 打赏
  • 举报
回复
要注意一点,跨进程调用方法,方法只能在目标进程内执行。即便你序列化过来,你也不能把程序代码给搬过来。
qldsrx 2013-11-20
  • 打赏
  • 举报
回复
直接WCF来实现就好了

111,093

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧