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... |