Ich benutze für dieses Problem auch WM_COPYDATA.
Situation
- Programm "A" ist gestartet
-- in der
DPR-Datei wird geprüft, ob es schon eine aktive Instanz gibt. Hier nein, also Programm ausführen
- erneut Doppelklick auf Programm "A" ruft Programm "A" erneut auf.
-- in der
DPR-Datei wird wieder auf eine aktive Instanz geprüft. Hier gibt es nun eine, also sende Daten mit WM_COPYDATA und führe die zweite Instanz von "A" nicht weiter => also beenden.
- die erste aktive Instanz von "A" wertet nun die von der zweiten Instanz "A" übergebenen Daten aus.