Volver a una aplicación ya abierta cuando un usuario intenta abrir una nueva instancia

Este ha sido un problema que no he podido resolver alguna vez. La prevención de la segunda instancia es trivial y tiene muchos métodos, sin embargo, recuperar el proceso que ya se está ejecutando no lo es. Me gustaría:

  • Minimizado: Deshaga el minimizar y lleve la instancia en ejecución al frente.
  • Detrás de otras ventanas: lleve la aplicación al frente.

El lenguaje en el que estoy usando esto es VB.NET y C #.

Encontré que este código es útil. Hace la detección y activación opcional de una aplicación existente:

http://www.codeproject.com/KB/cs/cssingprocess.aspx

Si está utilizando .NET, esto parece más fácil y más sencillo al usar la funcionalidad .NET integrada.

El código fuente semanal 31: WinForms de instancia única y Microsoft.VisualBasic.dll

Este enlace puede ser de ayuda:

http://www.ai.uga.edu/mc/SingleInstance.html

Tiene un código para detectar la ejecución de otra instancia, sin embargo, no está seguro de qué hacer con ella una vez que tenga la instancia.