我发现了这个工作示例,IPC 服务器和客户端 http://www.delphisources.ru/pages/sources/system/2012-year/ipc.html
但它不能正常工作,更准确地说,程序启动,但数据不传输。也许问题出在代码中,文本到服务器为空,从服务器接收的代码示例:
procedure TForm1.ServerRecieveIpcData(Sender: TObject; var ClientName: WideString; var ClientWaitingForResponse: Boolean; var Data: Pointer);
var
ResponseData: TResponseData;
begin
// TData(Data^).Text - пустоту возвращает
Form1.Memo1.Lines.Add(ClientName + ': ' + TData(Data^).Text);
if ClientWaitingForResponse then
begin
lstrcpynW(ResponseData.Text, PWideChar(Edit1.Text), MAX_LENGTH);
if not IPCServer.SendIpcData(ClientName, @ResponseData, SizeOf(TResponseData)) then
Form1.Memo1.Lines.Add('Error send response - ' + SysErrorMessage(IPCServer.LastError));
end;
end;
现在在客户端发送
procedure TForm1.Button1Click(Sender: TObject);
var
Data: TData;
ResponseData: Pointer;
begin
ResponseData := nil;
Data.ProcessId := GetCurrentProcessId;
lstrcpynW(Data.Text, PWideChar(Memo1.Text), MAX_LENGTH);
if not IPCClient.SendIpcData('IPC Server', @Data, SizeOf(TData), CheckBox1.Checked, 1000, ResponseData) then
Memo1.Lines.Add('Error send IPC data - ' + SysErrorMessage(IPCClient.LastError));
if ResponseData <> nil then
begin
MessageBeep(0);
MessageBoxW(0, TResponseData(ResponseData^).Text, 'IPC Client', 0);
end;
end;
一般来说,空虚来到服务器,即使你请求响应,也会弹出错误
我在delphi 6上做它是必要的
总的来说,我在客户端发送字符串 1234567890 并得到(变量调试):
前两个字符去某个地方并被替换......
对于 D6 试试这个: