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

时间:2009-05-11 16:30:23

标签: c# .net windows winforms

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

6 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

使用套接字将起作用。 命名管道也可以使用。

答案 2 :(得分:2)

如果程序不是.net,我建议发送或发送一条窗口消息:请参阅PostMessageRegisterWindowMessage。要在.net程序中收到此类消息,我认为您可能需要PInvoke RegisterWndowMessage,并覆盖您的WndProc

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

你应该用“实时”来定义你的意思:一方面在Windows上没有任何实时内容,另一方面当你开始退出时,反而说“近乎实时”或“软实时”然后许多解决方案成为可能。

答案 3 :(得分:0)

无法将XML消息字符串发送到正在非.net应用程序中侦听特定端口的.net应用程序。通过分析此XML消息,您可以调用.net应用程序中的特定功能..

疯狂猜测。

感谢 123Developer

答案 4 :(得分:0)

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

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

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

答案 5 :(得分:0)

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

  

Single Instance Application, Passing Command Line Arguments