• Lunes 29 de Abril de 2024, 22:51

Autor Tema:  Un Retardo Para Una Aplicacion  (Leído 4407 veces)

richard2348

  • Miembro activo
  • **
  • Mensajes: 29
    • Ver Perfil
Un Retardo Para Una Aplicacion
« en: Martes 24 de Mayo de 2005, 00:35 »
0
: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:

hdr

  • Miembro MUY activo
  • ***
  • Mensajes: 128
    • Ver Perfil
Re: Un Retardo Para Una Aplicacion
« Respuesta #1 en: Martes 24 de Mayo de 2005, 02:32 »
0
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/
    'E-Mail: WWW.ALLAPI.NET

Kev

  • Miembro HIPER activo
  • ****
  • Mensajes: 654
    • Ver Perfil
Re: Un Retardo Para Una Aplicacion
« Respuesta #2 en: Martes 24 de Mayo de 2005, 02:57 »
0
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:
La teoria es asesinada tarde o temprano por la experiencia
Albert Einstein
Kev - 3 DCE
-----------------------------------------------------
Articulos:
Convertir texto a imagen en ASP.NET
Trabajando con el Global.asax

richard2348

  • Miembro activo
  • **
  • Mensajes: 29
    • Ver Perfil
Re: Un Retardo Para Una Aplicacion
« Respuesta #3 en: Jueves 26 de Mayo de 2005, 01:05 »
0
: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?

tyron

  • Miembro activo
  • **
  • Mensajes: 35
    • Ver Perfil
Re: Un Retardo Para Una Aplicacion
« Respuesta #4 en: Jueves 26 de Mayo de 2005, 13:36 »
0
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.

richard2348

  • Miembro activo
  • **
  • Mensajes: 29
    • Ver Perfil
Re: Un Retardo Para Una Aplicacion
« Respuesta #5 en: Jueves 26 de Mayo de 2005, 14:57 »
0
:hola: Gracias amigos voy a probar con sus ideas haber que sale :hola:
Saludos a todos

aTauRy

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Un Retardo Para Una Aplicacion
« Respuesta #6 en: Jueves 2 de Junio de 2005, 11:52 »
0
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 ;)

richard2348

  • Miembro activo
  • **
  • Mensajes: 29
    • Ver Perfil
Re: Un Retardo Para Una Aplicacion
« Respuesta #7 en: Jueves 2 de Junio de 2005, 15:18 »
0
: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:

Cyclop

  • Miembro MUY activo
  • ***
  • Mensajes: 323
    • Ver Perfil
    • http://www.geocities.com/icotext/spanish/
Re: Un Retardo Para Una Aplicacion
« Respuesta #8 en: Jueves 2 de Junio de 2005, 22:27 »
0
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.  
Icotext Evolution v0.5 para los amantes del ASCII Art
http]

richard2348

  • Miembro activo
  • **
  • Mensajes: 29
    • Ver Perfil
Re: Un Retardo Para Una Aplicacion
« Respuesta #9 en: Viernes 3 de Junio de 2005, 21:33 »
0
: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

Cyclop

  • Miembro MUY activo
  • ***
  • Mensajes: 323
    • Ver Perfil
    • http://www.geocities.com/icotext/spanish/
Re: Un Retardo Para Una Aplicacion
« Respuesta #10 en: Sábado 4 de Junio de 2005, 02:53 »
0
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
Icotext Evolution v0.5 para los amantes del ASCII Art
http]

richard2348

  • Miembro activo
  • **
  • Mensajes: 29
    • Ver Perfil
Re: Un Retardo Para Una Aplicacion
« Respuesta #11 en: Lunes 13 de Junio de 2005, 18:14 »
0
: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: