SoloCodigo

Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: richard2348 en Martes 24 de Mayo de 2005, 00:35

Título: Un Retardo Para Una Aplicacion
Publicado por: richard2348 en Martes 24 de Mayo de 2005, 00:35
:hola: Hola amigos haber si me pueden ayudar: tengo una aplicacion en la que se ejecutan algunas operaciones y entre ellas reproduzco un archivo de sonido, para darle un efecto a la aplicacion antes de pasar a otra que tambien acompaña a las instrucciones otro archivo de sonido. Los archivos de sonido son cortos: no mas de un segundo pero el programa corre muy rapido y no se escuchan. He probado un retardo con un bucle for/next y funciona bien pero en otra pc no! creo es por la velocidad del micro, la memoria y todo eso.
como puedo obtener un retardo igual para cualquier maquina donde corra mi aplicacion!
Desde ya muchas gracias por cualquiera de sus aportes :hola:
Título: Re: Un Retardo Para Una Aplicacion
Publicado por: hdr en Martes 24 de Mayo de 2005, 02:32
depronto con la api, prueba esta

'This project needs a button
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Command1_Click()
    'KPD-Team 1998
    'URL: http://www.allapi.net/ (http://www.allapi.net/)
    'E-Mail: WWW.ALLAPI.NET (http://WWW.ALLAPI.NET)
Título: Re: Un Retardo Para Una Aplicacion
Publicado por: Kev en Martes 24 de Mayo de 2005, 02:57
o tambien puedes usar el control Timer  :huh:  aunque creo que es mas pesado que la solucion que te dio hernanvid, pero por si acaso

 :comp:
Título: Re: Un Retardo Para Una Aplicacion
Publicado por: richard2348 en Jueves 26 de Mayo de 2005, 01:05
:hola: hola amigos creo que no me explique bien lo que tengo es algo asi:
un comand que cuando se ejecuta tiene que mostrar cinco figuras pero cada una con un sonido diferente. Entonces regreso a mi problema que los sonidos se ejecutan muy rapido y no se aprecian. tienen alguna idea de como puedo hacer que terminado el primer sonido muestre la segunda figura, suene el segundo sonido y asi susecivamente?
Título: Re: Un Retardo Para Una Aplicacion
Publicado por: tyron en Jueves 26 de Mayo de 2005, 13:36
Hola, creo que con la opción de Kev, un timer, (mas que nada porque no se si usando la api no parará tambien la reproducción del sonido, no la he probado nunca, corrigeme si me equivoco) podrias ponerle un tiempo límite de lo que dura el archivo de sonido, entonces cuando se acabe ese tiempo, muestra la siguiente figura. Espero haberme explicado, pruebalo a ver si te sirve. Un saludo.
Título: Re: Un Retardo Para Una Aplicacion
Publicado por: richard2348 en Jueves 26 de Mayo de 2005, 14:57
:hola: Gracias amigos voy a probar con sus ideas haber que sale :hola:
Saludos a todos
Título: Re: Un Retardo Para Una Aplicacion
Publicado por: aTauRy en Jueves 2 de Junio de 2005, 11:52
Hola,
No se si te he entendido bien, quieres que cargue una figura y lance el sonido, cargue otra y lance el sonido y así hasta 5 figuras ¿no?

Si es así tras cargar la 1ª usa findwindowex (API) para saber si ha acabado y ejecuta el sonido, espera con un timer lo que dura el sonido y carga la segunda.
El control Timer también depende del equipo, si quieres segundos reales usa las API temporales.

Espero que te sirva, Hasta Otra ;)
Título: Re: Un Retardo Para Una Aplicacion
Publicado por: richard2348 en Jueves 2 de Junio de 2005, 15:18
:hola:Hola aTauRy haz dado en el clavo es justo lo que quiero, pero haber si me ayudas con esas apis no las conozco. Te agradeceria bastante :hola:
Título: Re: Un Retardo Para Una Aplicacion
Publicado por: Cyclop en Jueves 2 de Junio de 2005, 22:27
Mejor usa esto y te olvidas de todos esos problemas

Código: Text
  1. Private Const SND_APPLICATION = &H80         '  look for application specific association
  2. Private Const SND_ALIAS = &H10000     '  name is a WIN.INI [sounds] entry
  3. Private Const SND_ALIAS_ID = &H110000    '  name is a WIN.INI [sounds] entry identifier
  4. Private Const SND_ASYNC = &H1         '  play asynchronously
  5. Private Const SND_FILENAME = &H20000     '  name is a file name
  6. Private Const SND_LOOP = &H8         '  loop the sound until next sndPlaySound
  7. Private Const SND_MEMORY = &H4         '  lpszSoundName points to a memory file
  8. Private Const SND_NODEFAULT = &H2         '  silence not default, if sound not found
  9. Private Const SND_NOSTOP = &H10        '  don't stop any currently playing sound
  10. Private Const SND_NOWAIT = &H2000      '  don't wait if the driver is busy
  11. Private Const SND_PURGE = &H40               '  purge non-static events for task
  12. Private Const SND_RESOURCE = &H40004     '  name is a resource name or atom
  13. Private Const SND_SYNC = &H0         '  play synchronously (default)
  14. Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long
  15. Private Sub Form_Load()
  16.     'KPD-Team 2000
  17.     'URL: http://www.allapi.net/
  18.     'E-Mail: KPDTeam@Allapi.net
  19.     PlaySound "C:\WINDOWS\MEDIA\TADA.WAV", ByVal 0&, SND_FILENAME Or SND_ASYNC
  20. End Sub
  21.  
  22.  
Título: Re: Un Retardo Para Una Aplicacion
Publicado por: richard2348 en Viernes 3 de Junio de 2005, 21:33
:hola: Hola Cyclop lo que tengo es algo asi:
Option Explicit
Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
Private Const SND_ASYNC = &H1
Private Const SND_NODEFAULT = &H2
Private Const SND_MEMORY = &H4
Private Const SND_LOOP = &H8
Private Const SND_NOSTOP = &H10
Private Const SND_SYNC = &H0

Public Sub PlaySound(strSoundFile As String)
    Call sndPlaySound(strSoundFile, SND_ASYNC)
End Sub

Private Sub Pausa()
Dim i As Long
For i = 0 To 1000000
Next
End Sub

Private Sub Mostrar_Imagenes()
PlaySound App.Path & "\sonido_1.wav"
Primera.Picture = imagen(A)
Pausa
PlaySound App.Path & "\sonido_2.wav"
Segunda.Picture = imagen(B)
Pausa
PlaySound App.Path & "\sonido_3.wav"
Tercera.Picture = imagen©
Pausa
PlaySound App.Path & "\sonido_4.wav"
Cuarta.Picture = imagen(D)
Pausa
PlaySound App.Path & "\sonido_5.wav"
Quinta.Picture = imagen(E)
Pausa
End Sub

Private Sub Form_Load()
Mostrar_Imagenes
End Sub

Esto funciona mas o menos ya que Pausa depende de la velocidad de la maquina donde instale el programa, tu codigo funciona tambien con Pausa antes de ejecutar otro sonido, probe con el timer pero corre mal; tambien use DoEvents (no se si bien) pero me genera otros errores en otras partes del programa. Voy a seguir tratando de otras formas haber si sale, ya les aviso. Gracias por todo
Título: Re: Un Retardo Para Una Aplicacion
Publicado por: Cyclop en Sábado 4 de Junio de 2005, 02:53
Prueba con esto

Código: Text
  1. Private Declare Function GetTickCount& Lib "kernel32" ()
  2.  
  3. Private Sub Pausa()
  4.     ret& = GetTickCount&
  5.     ' Esperar hasta que cumpla los 2 minutos
  6.     Do While (ret& / 60000) <= 2
  7.          ret& = GetTickCount&
  8.     Loop
  9. End Sub
  10.  
  11.  

Salu2

Cyclopz
Título: Re: Un Retardo Para Una Aplicacion
Publicado por: richard2348 en Lunes 13 de Junio de 2005, 18:14
:hola: Hola amigos, encontre por ahi algo sencillo y que ha servido a mi proyecto aqui les dejo:

Private Sub Pausa()
Dim controlar
Dim comenzar
comenzar = Timer
Do Until controlar >= comenzar + 0.1
controlar = Timer
'DoEvents
Loop
End Sub

Gracias por su apoyo, Saludos a todos
 :hola: