我正在使用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中的服务器端代码已执行,因此建立了连接...