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