One thing I would do is sit back and unravel the spaghetti in your mind first. The fact ech uses a different means of communication should not matter if you have properly abstracted them.
The first question is "Do you need TCP socket level communication?" I see nothing that screams "yes" here. Assuming you do, your first issue is getting the socket communication. Get that up and running first. If this is multiple clients, there are open source projects you can start with to handle the communication bits. As an example, there is a project called Socket Server on CodePlex that can manage the sockets. I am, personally, not fond of the way the project is set up, but follow the documentation and get a server up. Or search for another piece that can do this for you.
Your next problem is "should I set up a socket?". If I am right, this sounds like a client side issue; if so, solve it separate from the socket connection and be done with it. I don't have bandwidth to determine if your method is the best here, but encapsulate that code and you can swap out the method of determining if the app is running later.
Now let's jump down to multiple apps communicate differently. If you have one in to multiple outs, think about a simplified service bus and then write adapters for the applications that need to listen. If it is multiple in to one out, then you need to write an adapter for the application anyway. Perhaps some apps do require socket level communication, and you need a socket to web API adapter (just an example, as I don't have enough detail).
The core of the advice is break the problem down and see what you can separate out and focus on. Many simple problems are generally easier to solve than one big complex problem.