Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Descargar Msgbox en ejecución

Estas en el tema de Descargar Msgbox en ejecución en el foro de Visual Basic clásico en Foros del Web. Hola Saben si existe en vb6 la posibilidad de descargar (cerrar) un Msgbox en tiempo de ejecución sin que el usuario interactúe con él? Me ...
  #1 (permalink)  
Antiguo 17/06/2005, 04:39
jorevale
Invitado
 
Mensajes: n/a
Puntos:
Pregunta Descargar Msgbox en ejecución

Hola

Saben si existe en vb6 la posibilidad de descargar (cerrar) un Msgbox en tiempo de ejecución sin que el usuario interactúe con él?

Me explico. Me interesa mostrarle al usuario un msgbox por un tiempo determinado de segundos y luego que se cierre automáticamente. En FoxPro, por ejemplo, existe la instrucción Wait, que detiene la ejecución del programa. En vb lo he probado con sleep, para aguantar el mensaje en pantalla, pero me convendría cerrar el msgbox automáticamente.

Salu2
  #2 (permalink)  
Antiguo 17/06/2005, 07:17
 
Fecha de Ingreso: abril-2005
Mensajes: 137
Antigüedad: 19 años
Puntos: 0
mmmmmmmmmmmm
como sugerencia, en lugar de utilizar el msgbox, poque no utilizas un frame que simule un mensaje y utilizas una rutina para que el programa espere x segundos, luego de que la rutina termine su ejecución pues pones visible=false al frame y sigues con el programa.

aca te mando el código que utilizo para esperar x segundos, espero que te sea útil
'Procedimiento para esperar X segundos

'Si se quiere usar de forma GLOBAL, insertarlo en un Módulo BAS
'y declararlo como público

Private Sub Wait(ByVal nSec As Integer)
'Esperar un número de segundos
Dim t1 As Date, t2 As Date
t1 = Second(Now)
t2 = t1 + nSec
Do
DoEvents
Loop While t2 > Second(Now)
End Sub
  #3 (permalink)  
Antiguo 17/06/2005, 08:10
5v5
 
Fecha de Ingreso: abril-2005
Ubicación: Huehuetoca, Mexico
Mensajes: 138
Antigüedad: 19 años, 1 mes
Puntos: 0
ok..te voy a pasar el codigo, lo encontre en la web, no me acuerdo de donde, pero no lo he analizado.......espero que tu lo analices y despues nos comentes su logica....ok

en el modulo introduce esto

Public Const NV_CLOSEMSGBOX As Long = &H5000&
Public Declare Function SetTimer& Lib "user32" (ByVal hWnd&, ByVal nIDEvent&, ByVal uElapse&, ByVal lpTimerFunc&)
Public Declare Function FindWindow& Lib "user32" Alias "FindWindowA" (ByVal lpClassName$, ByVal lpWindowName$)
Public Declare Function LockWindowUpdate& Lib "user32" (ByVal hwndLock&)
Public Declare Function SetForegroundWindow& Lib "user32" (ByVal hWnd&)
Public Declare Function MessageBox& Lib "user32" Alias "MessageBoxA" (ByVal hWnd&, ByVal lpText$, ByVal lpCaption$, ByVal wType&)
Public Declare Function KillTimer& Lib "user32" (ByVal hWnd&, ByVal nIDEvent&)
Public Const API_FALSE As Long = 0&
Public Sub TimerProc(ByVal hWnd&, ByVal uMsg&, ByVal idEvent&, ByVal dwTime&)
KillTimer hWnd, idEvent
Dim hMessageBox&
hMessageBox = FindWindow("#32770", "AutoCerrado")
If hMessageBox Then
Call SetForegroundWindow(hMessageBox)
SendKeys "{enter}"
End If
Call LockWindowUpdate(API_FALSE)
End Sub

y en el form

SetTimer hWnd, NV_CLOSEMSGBOX, 4000&, AddressOf TimerProc
Call MessageBox(hWnd, "Este mensaje desaparecerá en 4 segundos","AutoCerrado", MB_ICONQUESTION Or MB_TASKMODAL)

espero te sirva....
  #4 (permalink)  
Antiguo 17/06/2005, 10:02
jorevale
Invitado
 
Mensajes: n/a
Puntos:
De acuerdo Vale

La variante que propone marcocho2005 parece más sencilla y la emplearé de inmediato.

La variante de 5v5 la pondré en prueba también, pero un poco más adelante, porque ahora ando liado con el dichoso sistemita que me piden para ayer . Ya te comentaré sin falta

Gracias a ambos
  #5 (permalink)  
Antiguo 08/09/2008, 09:01
Avatar de haggenx  
Fecha de Ingreso: febrero-2007
Ubicación: México
Mensajes: 823
Antigüedad: 17 años, 3 meses
Puntos: 24
Respuesta: Descargar Msgbox en ejecución

Cita:
Iniciado por 5v5 Ver Mensaje
ok..te voy a pasar el codigo, lo encontre en la web, no me acuerdo de donde, pero no lo he analizado.......espero que tu lo analices y despues nos comentes su logica....ok

en el modulo introduce esto

Public Const NV_CLOSEMSGBOX As Long = &H5000&
Public Declare Function SetTimer& Lib "user32" (ByVal hWnd&, ByVal nIDEvent&, ByVal uElapse&, ByVal lpTimerFunc&)
Public Declare Function FindWindow& Lib "user32" Alias "FindWindowA" (ByVal lpClassName$, ByVal lpWindowName$)
Public Declare Function LockWindowUpdate& Lib "user32" (ByVal hwndLock&)
Public Declare Function SetForegroundWindow& Lib "user32" (ByVal hWnd&)
Public Declare Function MessageBox& Lib "user32" Alias "MessageBoxA" (ByVal hWnd&, ByVal lpText$, ByVal lpCaption$, ByVal wType&)
Public Declare Function KillTimer& Lib "user32" (ByVal hWnd&, ByVal nIDEvent&)
Public Const API_FALSE As Long = 0&
Public Sub TimerProc(ByVal hWnd&, ByVal uMsg&, ByVal idEvent&, ByVal dwTime&)
KillTimer hWnd, idEvent
Dim hMessageBox&
hMessageBox = FindWindow("#32770", "AutoCerrado")
If hMessageBox Then
Call SetForegroundWindow(hMessageBox)
SendKeys "{enter}"
End If
Call LockWindowUpdate(API_FALSE)
End Sub

y en el form

SetTimer hWnd, NV_CLOSEMSGBOX, 4000&, AddressOf TimerProc
Call MessageBox(hWnd, "Este mensaje desaparecerá en 4 segundos","AutoCerrado", MB_ICONQUESTION Or MB_TASKMODAL)

espero te sirva....

fantastico, funciona muy bien
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:25.