【发布时间】:2009-05-11 16:30:22
【问题描述】:
我有一个在内存中运行的基于 .net 的 Windows 应用程序。我想从不基于 .net 的外部应用程序触发应用程序中的功能之一。我怎样才能做到这一点?触发应该是实时的。
【问题讨论】:
我有一个在内存中运行的基于 .net 的 Windows 应用程序。我想从不基于 .net 的外部应用程序触发应用程序中的功能之一。我怎样才能做到这一点?触发应该是实时的。
【问题讨论】:
让第一个应用侦听 TCP 端口。使第二个应用程序连接到 TCP 端口并发送“WAKE UP LAZY PROGRAM”。通过做某事让第一个应用对此做出响应。
【讨论】:
使用套接字会起作用。 命名管道也可以使用。
【讨论】:
如果程序不是 .net,我建议发送或设置窗口消息:请参阅 PostMessage 和 RegisterWindowMessage。要在 .net 程序中接收这样的消息,我认为您可能需要 PInvoke RegisterWndowMessage,并覆盖您的 WndProc。
另一个很好的可能性是共享一个命名的互斥体。
您应该定义“实时”的含义:一方面,在 Windows 上没有什么是实时的,另一方面,当您开始放弃这一点时,改为说“几乎实时”或“软实时”然后许多解决方案成为可能。
【讨论】:
您不能将 XML 消息字符串发送到正在从非 .net 应用程序侦听特定端口的 .net 应用程序。通过分析此 XML 消息,您可以调用 .net 应用程序中的特定函数。
一个疯狂的猜测。
谢谢 123开发者
【讨论】:
消息传递可能是要走的路。使用套接字也可以,但是
a) 可能会引发安全漏洞,并且
b) 可能是某些机器上的防火墙软件存在问题。
【讨论】:
CodeProject 有一个使用 .NET Remoting / IPC 的示例:
【讨论】: