有没有办法在正在运行的 .NET 程序集中调用方法。
问题是我有一个 .NET 应用程序在系统启动时运行并将其自身放入系统托盘中。用户可以通过双击托盘图标来打开应用程序对话框,但即使用户再次启动应用程序(并且它已经在运行),我也想显示表单。 目前在 main 方法中,我将正在运行的 .NET 程序集作为 Process,但不知道如何获取对内部类/方法的引用。
我能够获取实例是否已经在运行,但想知道如何从我拥有的进程句柄中调用方法。 当它是第二个实例时,我检查所有正在运行的进程并获取指向我已经运行的进程的指针。我想知道 .NET 中是否有一种方法(彻底反射或其他方式)可以使用此进程句柄并向我返回一个指向接口(interface)的指针。
-2009 年 4 月 7 日添加- 有很多解决方案可以查找实例是否已经在运行,但我真正想要的是将进程转换为某个接口(interface)并调用其上的方法。 或者使用一些参数将消息传递到正在运行的应用程序。
最佳答案
这并不是真正的问题解决方案(调用特定方法),但它可以解决您打开表单的问题。
该解决方案太复杂,无法在此处复制,因此请检查一下: http://www.codeproject.com/KB/cs/SingleInstanceAppMutex.aspx
这段代码的作用是什么?
- When the user tries to open the application a second time, a second instance does not open on the screen.
- Instead the first instance comes to the foreground. If it is minimized, it is restored.
- If the application is minimized to the SYSTEM TRAY, then it is restored from there.
如果需要在实例之间传递参数,您甚至可以跳到页面末尾(我真的很喜欢 VB 解决方案...遗憾的是它不是为任何语言设计的。但您仍然可以使用它通过在 C# 应用程序中引用 VisualBasic 命名空间。)
希望这有帮助。
关于.NET - 在正在运行的进程中调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/650198/