I have written software with your requirements, except that it could run on multiple networked machines. The approach I took was Named Pipes. I wrote a Generic Server, and a Generic Client, and, in effect, an RPC Procedure. In effect a 'SendMessage' procedure on the Client side, which gathered and wrapped all the Calling Info, created a Header, indicating where in the package each item resides, and, send it over the pipe. On the Server Side, you wait for the message, unwrap it, and present it to the function. For this to work, I created a MessageMap type of structure. For it to work better, Server and Client had only the Basic Bones in the Message Map for initial communication. At startup of the Client, it sends it's message map to the server, which the server registers. When you have this Generic Server/Client system written, you make each app both a server and a client. Be sure though to make plenty of use of Synchronisation Objects. N.B. The efford is always substantial, whatever route you take. I took this way because: 1. I considered RPC an overkill, and yet something else I had to learn and which Bill Gates could change on a whim. 2. Fully Debuggable, Very Few System calls you cannot debug into Regards :) Regards,
Bram van Kampen