Hallo,
warum funktioniert folgender, aus einem Tut abgeschriebener einfacher Code nicht? (Erzeugt mit Delphi 2010 auf Win7 64-bit)
Sender:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
aCopyData: TCopyDataStruct;
p: PChar;
begin
p := '
String To send';
with aCopyData
do begin
dwData := 0;
cbData := StrLen(p) + 1;
lpData := p;
end;
SendMessage(FindWindow('
TFormRecv',
nil), WM_COPYDATA, Longint(
Handle),
Longint(@aCopyData));
end;
Empfänger:
Delphi-Quellcode:
type
TFormRecv = class(TForm)
ListBox1: TListBox;
private
{ Private-Deklarationen }
procedure WMCopyData(var Msg: TWMCopyData); message WM_COPYDATA;
public
{ Public-Deklarationen }
end;
var
FormRecv: TFormRecv;
implementation
{$R *.dfm}
procedure TFormRecv.WMCopyData(var Msg: TWMCopyData);
var s : string;
begin
s := String(PChar(Msg.CopyDataStruct.lpData)) ;
ShowMessage(s);
end;
Beim Empfänger kommt nach den ersten Buchstaben nur noch Müll an: 'String T....' Die letzten Buchstaben werden in irgendwelche Sonderzeichen umgewandelt.
Bin für jeden Hinweis dankbar.
Steffen