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

标签 .net process

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

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

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

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

最佳答案

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

该解决方案太复杂,无法在此处复制,因此请检查一下: http://www.codeproject.com/KB/cs/SingleInstanceAppMutex.aspx

这段代码的作用是什么?

  1. When the user tries to open the application a second time, a second instance does not open on the screen.
  2. Instead the first instance comes to the foreground. If it is minimized, it is restored.
  3. 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/

相关文章:

Java:获取给定 pid 的进程

process - 虚拟内存和物理内存

.net - 无法在 C# web.config 中创建连接字符串

.NET Directory.Move() 与 File.Move()

c# - 业务逻辑的正确位置在哪里?

c# - 使用linq无需select直接更新

c# - 在 Java 中复制 .NET 排序

java - 如何用Java从Native中的windowHandle获取进程信息?

c# - 启动进程时重定向标准错误和标准输入时出现问题

c++ - TerminateProcess 上的 ERROR_INVALID_HANDLE (VS C++)