Visual Basic - Controlando instancias de una aplicación

Life is soft - evento anual de software empresarial
 
Vista:

Controlando instancias de una aplicación

Publicado por dahool (17 intervenciones) el 23/12/2004 19:02:48
Tengo que ejecutar una aplicación oculta o con un icono en la bandeja del sistema, hasta aqui todo bien, lo que necesito es que cuando el usuario intente ejecutar la aplicacion nuevamente, no se habra una nueva instancia sino que se muestra la que se esta ejecutando actualmente. Como puedo hacer esto?
Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Controlando instancias de una aplicación

Publicado por Hector (3 intervenciones) el 24/12/2004 18:30:08
Cuando tu ejecutas un programa generas una instancia que es numerica, visual tiene una palabra reservada para encontrarla instancia que no recuerdo cual es, ese numero lo compararias si hay otro igual significa que estarias habriendo dos programas iguales y es ahi donde tu le dirias que mejor mande maximizar o llamar a tu aplicacion que ya esta habierta, para esto tienes que hacer que tu aplicacion inicie en un sub para que no abra la venta luego luego.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Controlando instancias de una aplicación

Publicado por dahool (17 intervenciones) el 24/12/2004 18:55:35
perfecto, el tema es como lo hago?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Se haría con previnstance

Publicado por Benjo (679 intervenciones) el 24/12/2004 19:28:31
La propiedad Previnstance del Objeto App
Devuelve un valor Boolean que indica si hay ya en ejecución una instancia anterior de una aplicación.

Debes iniciar la aplicacón desde un módulo en una Función MAIN
' Modulo Bas
Sub Main( )

If App.PrevInstance then exit sub
'Si previnstance devuelve verdadero, entonces sale de la aplicación
'De lo contrario sigue ejecutando el programa y ahora si cargá el formulario que siempre usas como inicial
FmrInicial.Show
End Sub

Suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Se haría con previnstance

Publicado por dahool (17 intervenciones) el 24/12/2004 20:01:24
a ver si me explico mejor, se como saber cuando la aplicación ya se esta ejecutando, lo que quiero es que si ya se esta ejecutando, me maximice el proceso que ya se esta ejecutando.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Acá está el código

Publicado por Benjo (679 intervenciones) el 24/12/2004 20:35:40
Ok lo entendí.
Se hace con las API de Windows, declaralas Privadas o públicas en un Modulo Bas, en el mismo en donde debés tener la función Main

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Const SW_MAXIMIZE = 3
Private Const SW_MINIMIZE = 6
Private Const SW_NORMAL = 1
Private Const SW_RESTORE = 9

Sub Main()
If App.PrevInstance then
RestoreWIndows
exit sub
endif
FmrInicial.Show
End Sub

Public Sub RestoreWIndows()
Dim asa As Long
'Busco la aplicación la cual tiene el Caption "Aplicacion Primera"
asa = FindWindow(vbNullString, "Aplicacion Primera")

If asa <> 0 Then 'Si la variable asa es mayor que 0 entonces
'restauro
Call ShowWindow(asa, SW_RESTORE)
End If
End Sub

Voilâ
Espero te sirva.
Mucha suerte.
Cualquier cosa avisame. Felices Fiestas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar