Thema: Delphi Probleme mit WM_CopyData

Einzelnen Beitrag anzeigen

Benutzerbild von runningsoft
runningsoft

Registriert seit: 8. Okt 2004
Ort: Bernau
108 Beiträge
 
Delphi 10.4 Sydney
 
#1

Probleme mit WM_CopyData

  Alt 27. Sep 2011, 14:46
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
Steffen
  Mit Zitat antworten Zitat