Hallo zusammen,
um Strings zwischen 2 Anwendungen auszutauschen verwende ich (Code aus der
DP):
Sender:
WindowsNachrichtAn('Tx', 'x', '#TEXT#');
Empfänger:
Delphi-Quellcode:
procedure Tx.WMCopyData(var Msg:TWMCopyData) ;
var
h: PChar;
begin
h:= Msg.CopyDataStruct.lpData;
Showmessage(h);
end;
wobei:
Delphi-Quellcode:
procedure WindowsNachrichtAn(Fensterklasse, Fenstername, Nachricht:
string);
var
CopyDataStruct: TCopyDataStruct;
ReceiverHandle: THandle;
begin
CopyDataStruct.dwData:= 0;
CopyDataStruct.cbData:= 1 + Length(Nachricht);
CopyDataStruct.lpData:= PChar(Nachricht);
// ReceiverHandle:= FindWindow(PChar(Fensterklasse),nil);
ReceiverHandle:= FindWindow(PChar(Fensterklasse),PChar(Fenstername));
if ReceiverHandle<>0
then begin
SendMessage(ReceiverHandle, WM_COPYDATA, Longint(
Handle), Longint(@copyDataStruct));
end;
end;
Hat bisher unter XP und Delphi5 einwandfrei geklappt.
Mit Delphi10 und win7 erhalte ich für das Beispiel '#TEXT#'
im Showmessagefenster:
#TEX(viereck)(chinesisches Zeichen)
die Länge ist in Ordnung, nur die beiden letzten Zeichen kommen falsch an.
Weiss jemand woran das liegen könnte?