.NET - 在正在运行的进程内调用方法

A9S*_*9S6 2 .net process

有没有办法在正在运行的.NET程序集中调用方法.

问题是我有一个在系统启动时运行的.NET应用程序,并将自己置于系统托盘中.用户可以通过双击托盘图标打开应用程序对话框,但即使用户再次启动应用程序(并且已经运行),我也想显示该表单.目前在main方法中,我将正在运行的.NET程序集作为Process,但不知道如何获取对内部类/方法的引用.

我能够知道一个实例是否已经在运行但是想知道如何从我拥有的进程句柄中调用方法.当它是第二个实例时,我检查所有正在运行的进程并获得指向我已经运行的进程的指针.我想知道是否有一种方法在.NET(彻底反射或其他)中将使用此进程句柄并返回指向接口的指针.

- 已添加7月4日 - 有许多解决方案可以查找实例是否已在运行但我真正想要的是将流程转换为某个接口并在其上调用方法.或者使用一些参数将消息传递给正在运行的应用程序.

Jul*_*n N 5

这不是问题的解决方案(调用特定方法),但它可以解决您打开表单的问题.

解决方案太复杂了,无法复制到此处,请查看:http: //www.codeproject.com/KB/cs/SingleInstanceAppMutex.aspx

这段代码有什么作用?

  1. 当用户尝试第二次打开应用程序时,屏幕上不会打开第二个实例.
  2. 相反,第一个实例来到前台.如果它被最小化,它将被恢复.
  3. 如果应用程序最小化到SYSTEM TRAY,则从那里恢复.

如果你需要在实例之间传递参数,你甚至可以跳到页面的末尾(我真的很喜欢VB解决方案......很遗憾它不是为任何语言设计的.但你仍然可以通过引用它来使用它C#app中的VisualBasic命名空间.)

希望这可以帮助.