Sábado 21 de Diciembre de 2024, 19:35
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
Visual Basic 6.0 e inferiores
(Moderador:
F_Tanori
) »
Previnstance
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Previnstance (Leído 5483 veces)
Especimen
Miembro activo
Mensajes: 25
Previnstance
«
en:
Viernes 23 de Julio de 2004, 01:32 »
0
Hola
En el form de inicio de mi aplicación tengo el siguiente código:
Private Sub Form_Load()
If App.PrevInstance = True Then
....MsgBox "El programa ya se está ejecutando.", "El programa"
....End
End If
Dim x As Integer
ReDim Cambio(7)
On Error GoTo ErrorLoad
....
....
....
exit sub
Cuando ejecuto el programa por 2ª vez, sin cerrar la primera instancia no funciona el código y se me abren dos ejemplares de la aplicación.
Alguna sugerencia??
Gracias
Tweet
DiabloRojo
Miembro MUY activo
Mensajes: 220
Re: Previnstance
«
Respuesta #1 en:
Viernes 23 de Julio de 2004, 02:04 »
0
Hola especimen.
No sé si es lo correcto pero prueba colocando dentro de tu bloque if-end if y después del msgbox un Unload Me. Eso te descargaría la nueva instancia del formulario luego del mensaje.
Suerte.
Especimen
Miembro activo
Mensajes: 25
Re: Previnstance
«
Respuesta #2 en:
Viernes 23 de Julio de 2004, 02:10 »
0
Gracias DiabloRojo, tampoco funciona asi.
La verdad es que realmente no se me llega a abrir la 2º instancia porque da un error.
Saludos
DiabloRojo
Miembro MUY activo
Mensajes: 220
Re: Previnstance
«
Respuesta #3 en:
Viernes 23 de Julio de 2004, 02:45 »
0
Hola.
A mi me funciona así como te indiqué. Prueba esto: en el menú seleciona Proyecto|Propiedades de proyecto|Generar y selecciona la opción Incremento automático en el Número de versión y vuelve a generar tu proyecto. Tal vez tenga algo que ver con esto.
Estuve revisando por ahí y encontré esto (a mí me parece un poco complicado pero ahí te va):
http://www.elguille.info/vb/VB_TIP3.HTM#vb3_09
Bueno espero que te sirva.
Mucha suerte.
Jose Arriagada
Miembro MUY activo
Mensajes: 373
Re: Previnstance
«
Respuesta #4 en:
Viernes 23 de Julio de 2004, 02:47 »
0
Private Sub Form_Load()
If App.PrevInstance = True Then
MsgBox "Solo puede ejecutar una instancia"
End
Else
Dim x As Integer
ReDim Cambio(7)
On Error GoTo ErrorLoad
...
....
....
End If
DiabloRojo
Miembro MUY activo
Mensajes: 220
Re: Previnstance
«
Respuesta #5 en:
Viernes 23 de Julio de 2004, 02:48 »
0
http://www.elguille.info/vb/VB_TIP3.HTM#vb3_09
y revisa el punto nueve.
Especimen
Miembro activo
Mensajes: 25
Re: Previnstance
«
Respuesta #6 en:
Viernes 23 de Julio de 2004, 03:17 »
0
Gracias por las respuestas.
Ya habia probado lo que decia Jose Arraigada y no funciona.
Y sobre lo que dice en la web de "el guille" (DiabloRojo) si no cambio el caption del form no deberia tener problemas y no lo cambio en ningun momento.
Por ahora lo he solucionado iniciando con un Sub Main desde donde cargo el formulario de inicio y me funciona asi, pero me jode.
Sub Main()
If App.PrevInstance = True Then
MsgBox "Ya hay una instacia abierta.", vbInformation
End
End If
Principal.Show
End Sub
Si alguien encuentra alguna explicación que me la diga.
Saludos
cpmario
Miembro HIPER activo
Mensajes: 629
Re: Previnstance
«
Respuesta #7 en:
Viernes 23 de Julio de 2004, 03:37 »
0
Yo uso este código
Código: Text
Private Sub Form_Activate()
Dim strText As String
Dim strSaveTitle As String
If App.PrevInstance = True Then
strSaveTitle = App.Title
App.Title = "... programa duplicado."
frmMain.Caption = "... programa duplicado."
strText = "Actualmente está abierta -Título-."
strText = strText + vbCrLf + "Sólo es necesario abrir una a la vez."
MsgBox strText, vbExclamation, "Advertencia..."
AppActivate strSaveTitle
SendKeys "% R", True
End
End If
End Sub
Jose Arriagada
Miembro MUY activo
Mensajes: 373
Re: Previnstance
«
Respuesta #8 en:
Sábado 24 de Julio de 2004, 00:22 »
0
******** O J O *************
Me extraña que mi codigo no te halla funcionado. A mi me funciona OK.
RECUERDA:
Prueba mi codigo.
Generar el ejecutable.
Y Prueba la ejecucion dos veces.
Y Funciona.
NO FUNCIONA SI USAS DOS VECES VB, y lo EJECUTAS DESDE AHI.
Blag
Moderador
Mensajes: 697
Re: Previnstance
«
Respuesta #9 en:
Sábado 24 de Julio de 2004, 03:04 »
0
Yo lo hago igual que
Jose Arriagada
, para mi screensaver y no tengo problemas.
Saludos,
Blag
Alvaro Tejada Galindo
Consultor ABAP Senior - Freelancer
SinglePath's Experimental HomePage
Revista "Código Latino"
Blag's Blogs en SDN
Lenguajes Script y SAP
Mi Blog Personal
Especimen
Miembro activo
Mensajes: 25
Re: Previnstance
«
Respuesta #10 en:
Sábado 24 de Julio de 2004, 03:19 »
0
Hola
Ya se que ese código debería funcionar, el que yo uso también debería lo he usado muchas veces, practicamente es igual, si lo probais funcionara.
Y el que he metido en el sub main desde donde arranco ahora es el mismo y asi no me da fallos. Así:
Sub Main ()
If App.PrevInstance = True Then
....MsgBox "El programa ya se está ejecutando.", "El programa"
....End
End If
End Sub
Sin embargo poniendolo al principio del form load y arrancando desde el form si me da un fallo "error 13, no coinciden los tipos".
He probado a meter un msgbox antes del código del PrevInstance y sale el msgbox pero después da el fallo.
sería así:
Private Sub Form_Load()
MsgBox "Hola"
.........................."DESPUES DE ESTO DA EL FALLO"
If App.PrevInstance = True Then
....MsgBox "El programa ya se está ejecutando.", "El programa"
....End
End If
....
End Sub
Saludos
DiabloRojo
Miembro MUY activo
Mensajes: 220
Re: Previnstance
«
Respuesta #11 en:
Sábado 24 de Julio de 2004, 14:08 »
0
Qué tal Especimen?
Copie y pegue el código que colocas y efectivamente da el error que comentas. Me parece muy extraño y no se ve forma aparente de solucionar, pero mas extraño me parece que reemplacé tu código por el mío (copiado y pegado desde otra aplicación) y sí funciona; pero es el mismo código!. Copia y pega desde aquí para ver qué tal:
If App.PrevInstance = True Then
MsgBox "Esta aplicacion ya está en uso"
Unload Me
End If
Espero que funcione...
Mucha suerte
P.D: Si alguien sabe el origen y solución de este error por favor coméntelo.
Especimen
Miembro activo
Mensajes: 25
Re: Previnstance
«
Respuesta #12 en:
Lunes 26 de Julio de 2004, 17:27 »
0
Hola DiabloRojo.
Parece que ya he dao con el error
así se produce el error:
MsgBox "El programa ya se está ejecutando.", "El programa"
y asi no se produce
MsgBox "El programa ya se está ejecutando."
También he probado con esto y el erro se produce
MsgBox "El programa ya se está ejecutando.", Me.Captión
Saludos
Especimen
Miembro activo
Mensajes: 25
Re: Previnstance
«
Respuesta #13 en:
Lunes 26 de Julio de 2004, 17:32 »
0
Bueno es que a veces somos CIEGOS y BURROS, al menos yo
El título del programa no estaba en su lugar, la forma corecta es
MsgBox "El programa ya se está ejecutando.", VbOkOnly, "El programa"
o
MsgBox "El programa ya se está ejecutando.", , "El programa"
Mas saludos
DiabloRojo
Miembro MUY activo
Mensajes: 220
Re: Previnstance
«
Respuesta #14 en:
Lunes 26 de Julio de 2004, 19:26 »
0
Por supuesto!!!
Benditas comas...
Me alegra saber que era un detalle menor.
Mucha suerte.
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
Visual Basic 6.0 e inferiores
(Moderador:
F_Tanori
) »
Previnstance