Hallo,
ich versuche, zwischen zwei Delphi Programmen Daten via "BroadcastSystemMessage" zu versenden.
Delphi-Quellcode:
// im FormCreate definiere ich meine Veriable
MSG_SHOW_ADDRESS := RegisterWindowMessage('ShowAddress');
// Hier der Ausschnitt aus der Methode zum Versenden..
var
dwRecipient : DWord;
begin
dwRecipient := BSM_APPLICATIONS;
BroadcastSystemMessage(BSF_POSTMESSAGE, @dwRecipient, MSG_SHOW_ADDRESS, myKndNr, 0);
end;
Auf der Empfängerseite läufts auch geschmeidig mit :
Delphi-Quellcode:
If Message.Msg = MSG_ADD_ADDRESS
Then
ShowMessage (InttoStr(Message.wParam));
Soweit so gut.
Jetzt kommt das Problem:
Eine Intergerzahl zu übertragen ist recht trivial. Kann man das auch mit einem Record machen ?
Die Idee hinter dem Senden:
Delphi-Quellcode:
T_Adresse = Record
Keycode : String[20];
Anrede : String[10];
Titel : String[30];
Vorname : String[30];
Nachname : String[30];
Adresse2 : String[30];
Strasse : String[30];
Hausnr : String[30];
PLZ : String[10];
Ort : String[30];
End;
P_Adresse= ^T_Adresse;
procedure TForm1.Button2Click(Sender: TObject);
VAR A : P_Adresse;
begin
New(A);
A.Keycode := 'SA01-02';
A.Anrede := 'Frau';
A.Vorname := 'Maxi';
Senden (Integer(@A));
end;
procedure TForm1.Senden(X: Integer);
var
dwRecipient : DWord;
begin
dwRecipient := BSM_APPLICATIONS;
BroadcastSystemMessage(BSF_POSTMESSAGE, @dwRecipient, MSG_ADD_ADDRESS, X, 0);
end;
und auf der Empfangenseite:
Delphi-Quellcode:
procedure TForm2.WndProc(var Message: TMessage);
VAR A : P_Adresse;
begin
if Message.Msg = MSG_ADD_ADDRESS
then
Begin
New(A);
A := @Message.wparam;
ShowMessage('ADRESSE HINZUFÜGEN !!!' + A^.Vorname);
End;
inherited;
end;
Wie zu erwarten - sonst würde der Post hier nicht stehen - klappt das nicht.
Mir stellt sich hier folgende Frage :
Klappt es nicht, weil ich einen Fehler beim Pointerhandling mache oder kann es evtl. gar nicht funktionieren, da ich zwischen 2 Programmen keinen "Speicherbereich" übergeben kann ?
Für eine Idee wäre ich sehr dankbar !
Tom