SendMessage PostMessage Struktur



  • Dieser Thread wurde von Moderator/in Jansen aus dem Forum VCL (C++ Builder) in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Wenn das Fenster zu einem anderen Prozess gehört, ist das wohl auch klar. Dafür gibt es WM_COPYDATA oder ansonsten die üblichen IPC Methoden, wie ausführlich in der MSDN beschrieben.



  • WestWorld schrieb:

    Hallo,

    Ich möchte gerne via SendMessage bzw. PostMessage eine Nachricht an ein anderes Fenster schicken. Die Nachricht soll über meinetwegen WM_MYMESSAGE (benutzdefiniert) heißen. Funktioniert ja auch alles bis hierher. Aber wenn ich eine Zeichenkette oder gar eine Struktur (struct XYZ { char str1[256]; char str2[256]; }; )über diese Funktionen schicke kriege ich im anderen Fenster nur Schrott. ALles versucht bis hin zu HGLOBAL und Co. Vielleicht weiß jemand weiter. Danke. 😕

    Du kannst mit SendMessage keine Variablen versenden, nur Zeiger auf die Variablen. Den Zeiger packst Du in die Params.



  • lol. du kannst wohl alles versenden, was in die beiden params reinpasst. 👎



  • Elektronix schrieb:

    Du kannst mit SendMessage keine Variablen versenden, nur Zeiger auf die Variablen. Den Zeiger packst Du in die Params.

    War auch meine erste Vermutung, aber ich hab keine weiteren Informationen dazu gefunden. Hast Du zufällig eine Quelle dazu?



  • dipl. Student schrieb:

    Wenn das Fenster zu einem anderen Prozess gehört, ist das wohl auch klar. Dafür gibt es WM_COPYDATA oder ansonsten die üblichen IPC Methoden, wie ausführlich in der MSDN beschrieben.

    dipl. Student schrieb:

    lol. du kannst wohl alles versenden, was in die beiden params reinpasst.

    Weist du eigentlich wovon du redest bzw. um was es hier geht??



  • Ja. Oder willst du etwa behaupten, es sei falsch, was ich geschrieben habe?



  • jo, weil er je einfach nur den zeiger auf die daten Senden kann, und damit auf sie zurückgreifen kann. will sie ja nich kopieren^^



  • Prozessübergreifend kommt dann nur Schrott aus, wie er in seinem Ausgangspost schon richtig schrieb. Lies bitte erstmal ein Buch über die Grundlagen, bevor du versuchst, mich hier anzumachen, Boris.



  • wieso? wenn die daten im prozess B aufm heap liegen kann prozess A über dnen zeiger auf diedaten zugriefen..



  • Oh Junge bitte nerv mich nicht. 🙄



  • Also blos weil dein Nick darauf schliessen lässt das du ein Informatik Student bist, der evtl. gerade sein Diplom macht, muss man sich hier noch lange nicht so auf blasen ...

    2 : 1 für :schland: 😉

    Gruß Tobi.



  • Pseudo Code

    Prozess A:

    DATA* ad = new DATA();
    SendMessage(...,WM_INSERTTOLIST,0,(LPARAM)ad);
    

    Prozess B:

    OnData( WPARAM WPara, LPARAM LPara)
    
        DATA * ad = (DATA *) LPara;
    
    }
    


  • BorisDieKlinge schrieb:

    Pseudo Code

    Prozess A:

    DATA* ad = new DATA();
    SendMessage(...,WM_INSERTTOLIST,0,(LPARAM)ad);
    

    Prozess B:

    OnData( WPARAM WPara, LPARAM LPara)
    
        DATA * ad = (DATA *) LPara;
    
    }
    

    lol



  • verstehst es nich gell... 🕶 🕶 :schland: :schland:



  • Vermutlich muß er noch ein paar Semester drauflegen, der Dipl.Inf.Student... :p



  • Tue dir einen Gefallen und probier deine Codeschnipsel zukünftig aus, bevor du sie im Forum postest. Damit ersparst du dir solche Peinlichkeiten. Du hast offensichtlich noch nicht ganz das Prinzip virtueller Addressräume verstanden. Also bitte nochmal Grundlagen überlernen und zukünftig Klappe nicht so weit aufreißen, Boris. ➡



  • @Dipl.Inf.Student

    Erlaube mir mal eine Frage: Wer außer Dir hat was von zwei Prozessen geschrieben? Der Threadersteller jedenfalls nicht. 🕶

    Westworld schrieb:

    Hallo,

    Ich möchte gerne via SendMessage bzw. PostMessage eine Nachricht an ein anderes Fenster schicken. Die Nachricht soll über meinetwegen WM_MYMESSAGE (benutzdefiniert) heißen. Funktioniert ja auch alles bis hierher. Aber wenn ich eine Zeichenkette oder gar eine Struktur (struct XYZ { char str1[256]; char str2[256]; }; )über diese Funktionen schicke kriege ich im anderen Fenster nur Schrott. ALles versucht bis hin zu HGLOBAL und Co. Vielleicht weiß jemand weiter. Danke.

    Du brauchst offenbar den zweiten Prozess, damit Du Recht behältst, obwohl Du auf dem falschen Dampfer bist.

    Als Student sollte man erstmal richtig lesen können, bevor man sich als Unreg so aufplustert.



  • BorisDieKlinge schrieb:

    Pseudo Code

    Prozess A:

    DATA* ad = new DATA();
    SendMessage(...,WM_INSERTTOLIST,0,(LPARAM)ad);
    

    Prozess B:

    OnData( WPARAM WPara, LPARAM LPara)
    
        DATA * ad = (DATA *) LPara;
    
    }
    


  • Elektronix schrieb:

    @Dipl.Inf.Student

    Erlaube mir mal eine Frage: Wer außer Dir hat was von zwei Prozessen geschrieben? Der Threadersteller jedenfalls nicht. 🕶

    Westworld schrieb:

    Hallo,

    Ich möchte gerne via SendMessage bzw. PostMessage eine Nachricht an ein anderes Fenster schicken. Die Nachricht soll über meinetwegen WM_MYMESSAGE (benutzdefiniert) heißen. Funktioniert ja auch alles bis hierher. Aber wenn ich eine Zeichenkette oder gar eine Struktur (struct XYZ { char str1[256]; char str2[256]; }; )über diese Funktionen schicke kriege ich im anderen Fenster nur Schrott. ALles versucht bis hin zu HGLOBAL und Co. Vielleicht weiß jemand weiter. Danke.

    Du brauchst offenbar den zweiten Prozess, damit Du Recht behältst, obwohl Du auf dem falschen Dampfer bist.

    Als Student sollte man erstmal richtig lesen können, bevor man sich als Unreg so aufplustert.

    Die Frage wegen der zwei Prozesse ist immer noch nicht beantwortet.


Anmelden zum Antworten