Da LParam einen Zeiger auf die Variable StreamName beinhalted, überschreibt er so den Inhalt dieser Variable mit dem Inhalt aus "Text".
Ja, OK, das stimmt. Aber mich verwirrt, was er damit erreichen will. Ich dachte er wollte an die Zeichenkette kommen, die auf die er im LParam einen Zeiger hat. Das Problem ist, um es noch mal deutlich zu machen, dass Zeiger nicht über Prozessgrenzen gültig sind. Es gibt ausnahmen. Bei WM_TEXT mapped Windows den Speicherbereich in einen Speicherbereich der für beide Prozesse gültig ist, so dass das mit den Zeigern funktioniert. Das sind noch Überbleibsel aus 16-Bit Windows Zeiten, als es noch keine getrennten Speicherbereiche gab. Bei WM_COPYDATA verfährt Windows ähnlich. Allerdings handelt es sich dabei um eine Fensternachricht, so dass zumindest der Empfänger ein Fenster sein muss. Ob auch der Thread von dem die Nachricht verschickt wird zu einem Fenster gehören muss, weiß ich jetzt nicht, aber man könnte es mal probieren, ob es auch ohne Fenster geht.