You describe a "single instance application". Microsoft provides a framework for them, see a description at http://msdn.microsoft.com/en-us/library/ms996475.aspx
Note that calls will come from a different thread than the GUI thread of the running application, which means that you have to
the appropriate methods.
For the association of file types with your program, see the answers above.