从Windows Service发送命令到正在运行的WinForm应用程序

本文关键字:运行 WinForm 应用程序 Service Windows 命令 | 更新日期: 2023-09-27 18:11:24

我有两个独立的程序。一种是winform,它承载一个正在运行的进程,通过窗体重定向输出/输入。这个过程是一个罐头产品,几乎没有机会自己修改它。

第二个程序是一个服务,它可以从正在运行的进程中获取数据,但它不直接与winform交互。

我的目标是从服务发送一个字符串到winform,然后与正在运行的进程交互。或者,我不介意能够直接向进程发送命令,但我敢打赌,如果不修改正在运行的进程源,这是不可能发生的。

我看过Named Pipes,但我不确定这是最好的方法。这两个程序都托管在同一台机器上。我只是不知道我还有什么选择。什么好主意吗?div =)

在MSDN上概述了Windows中可用的IPC(进程间通信)选项的全部范围。

    剪贴板
  • <
  • COM/gh>
  • 数据复制
  • DDE
  • <
  • 文件映射/gh>
  • Mailslots
  • 管道
  • RPC >
  • Windows socket

还有Windows之外的机制

  • MSMQ或类似队列系统
  • 在数据库或文件中记录命令/状态
在所有这些中,Named Pipes可能最适合您的特定应用程序。我以前也用过类似的东西。

从Windows Service发送命令到正在运行的WinForm应用程序

实现这种通信有多种选择。主要可以使用命名管道(WCF), MSMQ