The forms belonging to different VFP sessions (different processes) can exchange data in the same way. The window handle stays global through the Windows session.
The C# and VFP versions of this code sample are functionally identical. That allows exchanging data between .NET and VFP forms (applications).
In real life situation, prior to exchanging data the forms must have exchanged their window handles. That can be arranged by each form broadcasting a specific message that the other forms would recognize and respond. The FindWindow API is another option.
* * *
Comparing to other ways of interprocess communication (named pipes, mailslots, Winsock) the WM_COPYDATA has a certain edge: no need to implement any listening part. The OS does it for you.