Did you try to find any by yourself? This is quite a popular topic. A different approaches can be used, with benefits and disadvantages.
Anyway, only on CodeProject:
Single Instance Application[
^].
A very primitive minimal solution:
To create single instance of application[
^].
Via file mapping:
Implementing Single Instance Application Using “File Mapping” Technique[
^].
For C++/CLI:
The Single Instance Class Library[
^].
...would you like to search some more?
You may need to solve the following issues:
1) From and instance of the application, detect previously started instance of the same application; you need to decide what you consider the "same application"; the question is not so trivial, it can be the application started from exact same executable file; otherwise what's the same? It can be defined by some identical feature, such as Atom name...
2) Optionally, pass command line parameters to the first instance;
3) First instance must be able to receive some event from the second instance and activate its main window, not so trivial if a modal dialog is running;
4) Optionally, first instance must be able to receive command line parameters from the second instance and process them;
5) When communication of the second instance and the first instance is done, the second instance must terminate;
6) Optionally, sigle-instance behavior can be optional.
I'll need to find, understand and overview known techniques to understand what features exactly do you need.