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
Invoke
the appropriate methods.
For the association of file types with your program, see the answers above.