Is there any reason why there have to be five executables? Some sort of multi-processing? Otherwise, I would simply put each module into a separate DLLs or OCXs. There would be a "master" program which would be there simply to load these components. You could either have the following classes in your DLL:
- P1.Connect
- P2.Connect
- P3.Connect
- P4.Connect
- P5.Connect
Each one implementing an interface with a Load() method. This method loads the main form of the module.
Alternatively, you can be generic and have forms in the master program which load ActiveX controls from each OCX which contain the module GUI.
You would implement an event or callback from each Connect class so that when the module is closed, the master EXE knows about it.
If you absolutely must have separate EXEs, you could do this by implementing them as ActiveX EXEs, with the same class names as above. As I suggested, your "master EXE" would be responsible for loading each subsiduary module.
As an aside, regardless of which method you use, if you require five separate "start" icons, then you can create five shortcuts which refer to the master EXE, but with different command line parameters. Depending on which command line parameter used, you start a different module.