Wenn dein Hauptprogramm kein Service ist eignet sich die schon genannte Methode über Windowsnachrichten dafür hervorragend.
Du benutzt WM_COPYDATA dafür, das nutzt für beide Prozesse denselben Speicher und ist genau für so etwa vorgesehen.
Eine Kommunikation in beide Richtungen ist damit möglich.
Delphi-Quellcode:
var LCopyDataStruct : TCopyDataStruct;
...
...
SendMessage(HandleDesZiels, WM_COPYDATA, EineZahl_BeliebigeDaten, LongInt(@LCopyDataStruct));
PostMessage oder SendMessage dafür nutzen, je nach dem was man erreichen möchte.