La Web del Programador: Comunidad de Programadores
 
    Pregunta:  12598 - MANEJO DE INSTANCIAS ACTIVAS
Autor:  Martin Mela
Estoy desarrollando una aplicación en VB6, que solo debe ser ejecutada una vez. Por el momento, puedo enviarle un mensaje al usuario indicandole que ya existe una aplicación activa con las funciones:
app.previnstace = false
pero lo que necesito en realidad es mostrar nuevamente la instancia ya existente maximizando la ventana de la misma que se encuentra en la barra de tareas.

No se si por API puede hacerse...

Les agradeceria cualquier apoyo a esta pregunta...

  Respuesta:  Martin Mela
Bueno, dicen que probando y probando se resuelven las cosas...

Esta es la forma como resolvi mi problema.

Primero en un modulo general hice la declaración del uso del API ShowWindow de la siguiente forma:

Public Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long

Public xUltInstancia As Long 'Será la referencia a la aplicación anterior

Public Const SW_MAXIMIZE = 3
Public Const SW_MINIMIZE = 6

Sub Main()

If Not App.PrevInstance Then
' La primera vez que se ejecute la aplicación
' se realizara lo siguiente...
frmPrincipal.Show

else
' La segunda vez que se ejecute buscamos la información guardada
' en nuestro registro, y la enviamos a la función API ShowWindow

xUltInstancia = CLng(GetSetting _ (App.Title, "Configuracion", "Instancia", "0"))
ShowWindow xUltInstancia, SW_MAXIMIZE

endif

end sub

y en el evento load de la forma principal hacer lo siguiente:

Private Sub Form_Load()
'Esto solo ocurrira la primera vez que se ejecute la aplicación
' La variable xUltInstancia recivirá el número de manejo de ventana
' que es proporcionado por windows

xUltInstancia = frmPrincipal.hwnd

'Salvamos este numero en el registro de nuestra aplicación
SaveSetting App.Title, "Configuracion", "Instancia", xUltInstancia

End Sub

Espero que esto les ayude... si algun dia tienen un problema similar...