如何触发已经运行的基于.net的Windows应用程序?

我有一个基于.net的Windows应用程序正在运行在内存中。 我想从外部应用程序,而不是基于.net的基于触发应用程序的function之一。 我怎样才能做到这一点? 触发应该是实时的。

使第一个应用程序侦听TCP端口。 使第二个应用程序连接到TCP端口并发送“WAKE UP LAZY PROGRAM”。 让第一个应用程序做出回应。

使用套接字将工作。 命名管道也将工作。

如果程序不是.net我建议发送或定位窗口消息:请参阅PostMessageRegisterWindowMessage 。 要在.net程序中收到这样的消息,我想你可能需要PInvoke RegisterWndowMessage ,并重写你的WndProc

另一个很好的可能性是共享一个有名的互斥体。

你应该定义“实时”的含义:一方面,在Windows上什么都不是实时的,另一方面,当你开始退出,并且说“接近实时”或者“软真实时间“,那么许多解决方案成为可能

你不能发送和XML消息字符串到.net应用程序正在监听在非.NET应用程序的特定端口。 通过分析这个XML消息,你可以调用.net应用程序中的特定功能。

疯狂的猜测。

感谢123Developer

消息传递可能是要走的路。 使用套接字也可以,但是

a)可能会打开安全漏洞,而且

b)在某些机器上可能是防火墙软件的问题。

CodeProject有一个使用.NET Remoting / IPC的示例:

单实例应用程序,传递命令行参数