Good suggestion but I see cons than pros with the INI option. To be fair, and not to sound like I'm attacking your suggestion, this is what I see as pros and cons for both the INI option and Socket options. I fully endorse your suggestions to this list.
Pros and cons of INI files:
Cons:
Many applications wanting to get a hold of one resource isn't a great idea. Even in the database world, theres only ONE object that has hold of a row in a table. Many objects may want to take hold of that information contained with in a field of that row, but they have to talk through the governing DB connection object to obtain that information.
Many applications starting and stopping moves PIDs around, not necessarily chronologically speaking. PIDs get reused, and there are possibilities that issues will arise due to this fact.
No direct method of communication between parent and client. Part of the rule set is that the parent needs to give the child new information.
Timers to babysit things are ugly.
Nightmare to try and figure out what processes are PID 445, 4435, 6547, 9547 and who belongs to what process.
Definitely not OOP type of programming.
If programs crash, stale data ends up in the INI.
Pros
Small file foot print.
Not a lot of resources consumed outside of disk activity, which is low due to windows caching of files.
Something tangible to look at.
Pros and cons of TCP Socket
Cons:
In the spirit of timers, consumes memory and resources such as network stack and memory addressing. But this use is for real time data exchange.
It is easier to play with INI files to an extent rather than sockets if you're not confident on how they can work.
Pros:
Direct, live information feed from parent to client.
No outside interference in communications. Commands from the parent can be sent to the child process, and confirmation via handshaking or the disconnection event will confirm if command has been sent.
Event driven for information received through the socket. IE: Disconnections, connections, commands.
More along the lines of OOP. Its one on one communication between parent and child.
--
Relying on PIDs and memory addressing isn't the best of ideas, especially when it comes down to looking at where something is placed when your application does NOT have control over it once its launched. Its kind of like giving your kid your Suburban, which may have GPS and a call-home feature that monitors speed, but doesn't mean you can control what the vehicle is doing.
Another pro to a socket is that since he has the source code, a the client TCP socket can receive commands and issue the proper procedures to get whats needed to be done, done. That is assuming of course the source is written properly.
For instance, if a file has to be loaded in the child, the client may have in the GUI a FILE> OPEN> and a dialog to let the user select the file, but if the parent already knows what it is, at the click of the appropriate button, the parent can feed the OPEN command directly to the client via a custom text based protocol (For example
OPEN:c:\dork.txt), the client receives that by method of an event, and then realizes its supposed to open a file. So it sets a the filename variable, calls the procedures to load and display the data, make sure its visible and on screen and in a RESTORED state. If the server say something like
TAB:3 the server can tell the client to switch to the third tab, so on and so on.
-=*=-=*=-=*=-=*=-=*=-=*=-=*=-=*=-=*=-=*=-=*=
NEVER send the boss to do a techs job