Hej!
Mam problem pewnie jest on banalny. Chodzi o to, ze mam dzialajace aplikacje klient-serwer na zasadzie komunikatow. Komunikat jest ladnie wysylany i odpierany przez druga aplikacje. Chodzi mi jednak o to w jaki sposob moge odebrac odpowiedz po otrzymaniu komunikatu?
Tutaj wysylam komunikat:
procedure TSerwer.Button1Click(Sender: TObject);
var
res:integer;
receiverHandle : THandle;
stringToSend : string;
copyDataStruct : TCopyDataStruct;
begin
stringToSend := 'testujemy';
copyDataStruct.dwData := 0; //use it to identify the message contents
copyDataStruct.cbData := 1 + Length(stringToSend) ;
copyDataStruct.lpData := PChar(stringToSend) ;
receiverHandle := FindWindow(nil, PChar('Klient')) ;
if receiverHandle = 0 then
begin
ShowMessage('CopyData Receiver NOT found!') ;
Exit;
end;
res := SendMessage(receiverHandle, WM_COPYDATA, Integer(Handle), Integer(@copyDataStruct)) ;
end;
A tutaj odbieramy:
procedure TKlient.WMCopyData(var Msg: TWMCopyData) ;
var
s: string;
begin
s := PChar(Msg.CopyDataStruct.lpData) ;
//Send something back
Memo1.Lines.Add(s);
msg.Result := 1;
end;
Wydaje mi sie ze msg.Result jest odpowiedzia (mam racje?). Jezeli tak to w jaki sposob odebrac ta odpowiedz przez pierwsza aplikacje?
pozdrawiam!