Daten mit WM_COPYDATA zwischen Prozessen austauschen
-
Hi.
Ich möchte Daten zwischen zwei Programmen austauschen.
Ich habe mich hier an einem Delphi Beispiel orientiert und versucht in CBuilder zu übernehmen: http://www.delphipraxis.net/post20727.htmlIch habe zwei seperate Formulare in je einem eigenen Projeklt erstellt.
Das senden scheint zu funktionieren, zumindest das WM_CLOSE schliesst die andere Form, aber das senden der Daten bzw das empfangen dieser in der anderen Form bewirkt bisher garnichts.SendeForm
void __fastcall TForm1::Button1Click(TObject *Sender) { char *message = Memo1->Text.c_str(); TCopyDataStruct aCopyData; aCopyData.dwData = 0; aCopyData.cbData = strlen(message) + 1; aCopyData.lpData = message; //SendMessage(FindWindow("TFormRecv", NULL), WM_CLOSE, NULL, NULL); SendMessage(FindWindow("TFormRecv", NULL), WM_COPYDATA, Longint(Handle), Longint(&aCopyData)); }
EmpfängerForm
class TFormRecv : public TForm { __published: // Von der IDE verwaltete Komponenten TMemo *Memo1; private: // Anwender-Deklarationen MESSAGE void __fastcall WMCopyData(Messages::TWMCopyData &Msg); public: // Anwender-Deklarationen __fastcall TFormRecv(TComponent* Owner); }; MESSAGE void __fastcall TFormRecv::WMCopyData(Messages::TWMCopyData &Msg) { ShowMessage("xxx"); char *text = (char*)Msg.CopyDataStruct->lpData; Memo1->Text = text; }
Sehe weder das ShowMessage("xxx"); noch im Memo den gesendeten Text. Kann wer sagen wo der Fehler liegt? Danke.
-
Och sieht keiner den Fehler in der MESSAGE Funktion? Das sehr schade.
-
Hast du denn auch einen MessageHandler, also fängst du diese Message auch?