我有一个systemtray应用程序(C#,Windows Forms)。在这个可执行文件旁边,我将有另外x个可执行文件(用C#编写),它必须以某种方式向系统托盘应用程序发送消息(最好是字符串格式)。
示例:可执行文件X1.exe向系统托盘应用程序发送消息“执行操作[A]参数[B]”,然后自行终止。系统托盘应用程序将读取该字符串,然后知道它需要使用参数“B”调用函数A.
但我如何发送/接收消息?
谢谢。
答案 0 :(得分:1)
不使用WCF - 你可以在Named Pipes上使用一个简单的包装 - 就像this我发布的另一个问题的答案。
希望这有帮助!
答案 1 :(得分:1)
对于本地通信,您可以尝试使用匿名管道。
链接:http://msdn.microsoft.com/en-us/library/bb546102.aspx
您还可以查看远程方法调用。 这是一个例子:
http://www.codeproject.com/Articles/14791/NET-Remoting-with-an-easy-example
答案 2 :(得分:0)
本机应用程序有一种非常方便的方法,即窗口消息。有了一些hack,你也可以在.net应用程序中使用它。
我建议你参考
SendMessage和SendMessageA api函数。你可能不得不写一些不安全的代码。
答案 3 :(得分:0)
如果您使用自托管的Asp.Net Web API,那么您可以使用对该应用程序的简单http调用来执行方法。这很好,因为你可以使用fiddler或任何可以发送http请求的东西来测试它。
以下是一个示例链接。 http://www.asp.net/web-api/overview/hosting-aspnet-web-api/self-host-a-web-api
答案 4 :(得分:0)
对我来说最简单的解决方案似乎是使用WCF服务(在托盘应用程序中),如Steve B所述。 我使用了本教程:http://www.switchonthecode.com/tutorials/wcf-tutorial-basic-interprocess-communication。
之前我没有听说过管道,但我认为上面的链接使用带管道的WCF服务。它确实解决了我的问题。
感谢您提供的许多解决方案(以及如此之快)。