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.html

    Ich 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?


Anmelden zum Antworten