首页 > 解决方案 > 在 Delphi 中使用命名管道从 Windows 服务到 GUI 前端进行通信

问题描述

我正在使用 Russell Libby 的 Pipes.PAS 单元来促进使用命名管道的两个程序之间的通信。我使用一台服务器(带有 GUI 的 VCL 程序)和一台可以多次启动的客户端(也是 VCL)制作了一个工作示例,我可以在它们之间来回通信。

但是,当我在 Windows 服务中运行相同的服务器代码时,我可以看到客户端在服务中连接(我登录到文本文件),但是当服务广播要由客户端读取的消息时,什么也没有发生在客户端。

为了让命名管道从 Windows 服务工作到前端 GUI 程序,是否需要做任何特殊的事情?

我构建服务器管道如下:

  Pipe:=TPipeServer.Create(Self);
  Pipe.Name:='Pipe';
  Pipe.OnPipeMessage:=PipePipeMessage;
  Pipe.OnPipeConnect:=PipePipeConnect;
  Pipe.OnPipeDisconnect:=PipePipeDisconnect;
  Pipe.PipeName := 'Service';
  Pipe.Active:=TRUE;

和客户端:

  Pipe:=TPipeClient.Create(NIL);
  Pipe.Name:='Pipe';
  Pipe.MemoryThrottle:=10240000;
  Pipe.PipeName := 'Service';
  Pipe.OnPipeMessage:=PipePipeMessage;

但我从未执行过 PipePipeMessage 的代码。

我错过了什么吗?就像我说的,Connected 中的服务器端代码被执行,所以建立了一个连接......

标签: delphinamed-pipesdelphi-10.3-rio

解决方案


推荐阅读