Einzelnen Beitrag anzeigen

Benutzerbild von moin339
moin339

Registriert seit: 23. Sep 2002
Ort: Hamburg
136 Beiträge
 
#1

record von einer dll an ein programm schicken

  Alt 12. Dez 2002, 16:54
Moin!

Ich bin grad dabei ein record von einer dll an ein Programm zu Schicken. Ich wollte das mit der Message WM_COPYDATA machen aber es funktioniert leider nur, wenn mein Programm im Vordergrund ist. Wisst ihr wodran das liegt?

Hier jetzt erstmal der Code des Senders (in der dll):
Code:
procedure Sende;
type
  TTest = record
    s: string;
    i: integer;
  end;

var
  CDS: TCopyDataStruct;
  Test: TTest;
  lPTest: ^TTest;
begin
  lPTest := @Test;
  lPTest^.s := 'Hallo! Ist das angekommen?';
  lPTest^.i := 4564;
  with CDS do
  begin
    dwData := 0;
    cbData := SizeOf(Test) + 1;
    lpData := lPTest;
  end;
  SendMessage(ProgHandle^, WM_COPYDATA, 0, LongInt(@CDS));
end;
und jetzt vom empfänger (im prog):
Code:
procedure TForm1.Empfange(var msg: TWMCopyData);
type
  TTest = record
    s: string;
    i: integer;
  end;
var
 Test: TTest;
 lPTest: ^TTest;
begin
  lPTest := msg.CopyDataStruct.lpData;
  Test := lpTest^;

  showmsg('übergebener String:' + #13 + Test.s);
  showmsg('übergebene Zahl:' + #13 + IntToStr(Test.i));
end;
Wo liegt da jetzt der Fehler Ich habe auch schon bei google gesucht aber leider nichts brauchbares gefunden.

cu, moin339
  Mit Zitat antworten Zitat