我有一个基于.net的Windows应用程序正在运行在内存中。 我想从外部应用程序,而不是基于.net的基于触发应用程序的function之一。 我怎样才能做到这一点? 触发应该是实时的。
使第一个应用程序侦听TCP端口。 使第二个应用程序连接到TCP端口并发送“WAKE UP LAZY PROGRAM”。 让第一个应用程序做出回应。
使用套接字将工作。 命名管道也将工作。
如果程序不是.net我建议发送或定位窗口消息:请参阅PostMessage
和RegisterWindowMessage
。 要在.net程序中收到这样的消息,我想你可能需要PInvoke RegisterWndowMessage
,并重写你的WndProc
。
另一个很好的可能性是共享一个有名的互斥体。
你应该定义“实时”的含义:一方面,在Windows上什么都不是实时的,另一方面,当你开始退出,并且说“接近实时”或者“软真实时间“,那么许多解决方案成为可能
你不能发送和XML消息字符串到.net应用程序正在监听在非.NET应用程序的特定端口。 通过分析这个XML消息,你可以调用.net应用程序中的特定功能。
疯狂的猜测。
感谢123Developer
消息传递可能是要走的路。 使用套接字也可以,但是
a)可能会打开安全漏洞,而且
b)在某些机器上可能是防火墙软件的问题。
CodeProject有一个使用.NET Remoting / IPC的示例:
单实例应用程序,传递命令行参数