Muy buenas, por casualidad, encontre esta api un poco retorcida de encontrar, o por lo menos eso me parecio amí , bueno aquí os dejo la API y el modo de uso:

Código: Seleccionar todo

[b]Un módulo:[/b]

Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Declare Function SleepEx Lib "kernel32" (ByVal dwMilliseconds As Long, ByVal bAlertable As Long) As Long

Código: Seleccionar todo

[b]Un formulario:[/b]

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare Function SleepEx Lib "kernel32" (ByVal dwMilliseconds As Long, ByVal bAlertable As Long) As Long
Modo de uso:
y solo lo mandas llamar con sleep n ,por decir deseo que se suspenda durante 10 segundos sera:


Un saludo

Fuente ( api ) : UnderGround
Imagen

http://img844.imageshack.us/img844/8088/mujerrara.jpg
http://img715.imageshack.us/img715/5813/tigree.png
http://img830.imageshack.us/img830/6484/camaleon.png

http://img839.imageshack.us/img839/4944/tigrev2.jpg
http://img843.imageshack.us/img843/443/spidermanxn.png

http://www.youtube.com/watch?v=wHYYkciIKE0


Por que declaras ambas APIs? Ademas, porque lo haces dos veces?

Retorcida? Ni mucho menos, es el API mas usada despues de MessageBox

Código: Seleccionar todo

'KERNEL32
Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)

Private Sub Form_Load()
    MsgBox "HOLA"
    Call Sleep(5 * 1000) '5000 ms = 5 segundos
    MsgBox "HOLA, han pasado 5 segundos"
End Sub
Imagen
Karcrack escribió::eek:

Por que declaras ambas APIs? Ademas, porque lo haces dos veces?

Retorcida? Ni mucho menos, es el API mas usada despues de MessageBox
[/code]
Si me quede flipando cuando acabo de leer esto jajaja.... pero a veces no es bueno usar sleep con intervalos muy grandesd de tiempo o se rompe el programa.. por lo menos a mi me pasa eso a veces ...
Imagen
Karcrack escribió::eek:

Por que declaras ambas APIs? Ademas, porque lo haces dos veces?

Retorcida? Ni mucho menos, es el API mas usada despues de MessageBox

Código: Seleccionar todo

'KERNEL32
Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)

Private Sub Form_Load()
    MsgBox "HOLA"
    Call Sleep(5 * 1000) '5000 ms = 5 segundos
    MsgBox "HOLA, han pasado 5 segundos"
End Sub
, esa si hombre, la de toda la vida del sleep , la que yo decía era esta

Código: Seleccionar todo

Private Declare Function SleepEx Lib "kernel32" (ByVal dwMilliseconds As Long, ByVal bAlertable As Long) As Long

Porque me parecio dificil de usar nada más
Imagen

http://img844.imageshack.us/img844/8088/mujerrara.jpg
http://img715.imageshack.us/img715/5813/tigree.png
http://img830.imageshack.us/img830/6484/camaleon.png

http://img839.imageshack.us/img839/4944/tigrev2.jpg
http://img843.imageshack.us/img843/443/spidermanxn.png

http://www.youtube.com/watch?v=wHYYkciIKE0
Bueno, pues no es tan dificil

Código: Seleccionar todo

http://msdn.microsoft.com/en-us/library/ms686307(VS.85).aspx
bAlertable [in]

If this parameter is FALSE, the function does not return until the time-out period has elapsed. If an I/O completion callback occurs, the function does not return and the I/O completion function is not executed. If an APC is queued to the thread, the function does not return and the APC function is not executed.

If the parameter is TRUE and the thread that called this function is the same thread that called the extended I/O function (ReadFileEx or WriteFileEx), the function returns when either the time-out period has elapsed or when an I/O completion callback function occurs. If an I/O completion callback occurs, the I/O completion function is called. If an APC is queued to the thread (QueueUserAPC), the function returns when either the timer-out period has elapsed or when the APC function is called.
SkyWeb07, eso que dices es porque mientras esta en un Sleep el programa no responde a los mensajes que windows le envia... asi que solo hace falta hacer algo como esto:

Código: Seleccionar todo

Public Sub SleepInterval(ByVal dwMilliseconds As Long, Optional ByVal dwInterval As Long = 200)
    Dim i       As Long
    
    For i = 0 To (dwMilliseconds / Interval)
        Call Sleep(Interval)
    Next i
End Sub
Uso:

Código: Seleccionar todo

SleepInterval 50000
No lo he provado, pero debe ir...
Imagen
Si, de eso ya me fije yo, el programa actua como el típico (no responde) ... lo dicho un fastidio. El codigo que ha puesto Karcrack si que debería funcionar.... si necesito usar Sleep lo recordaré sin duda
Imagen
En la función SleepInterval es necesario un DoEvents o no? O VB procesa los mensajes de la gui entre los ciclos del bucle? .

Saludos
@Hacker_Zero: Bueno, ese codigo es para que el que no se quede la ejecucion de nuestro programa encerrada en el API Sleep... pero como tu dices vendria bien un DoEvents... aunque de todas formas este metodo evitaria el cuelgue de la APP... creo... como digo, no tengo el VB aqui para probarlo...
Imagen
no puedo ejecutarlo en el remoto..:( pero vamo me pasa con todo los .exe.. cada vez que le subo algo le pregutna al remoto si quiere ejecutarlo verdaderamente o no..(p**o kis Xd)
Imagen

Imagen

Lo siento,Te quivocaste de cnta amigo ;).
Responder

Volver a “Fuentes”