¿Como poner un sonido Wav como fondo de mi aplicacion?

Iniciado por TheGhost(Z), 1 Abril 2006, 21:10 PM

0 Miembros y 1 Visitante están viendo este tema.

TheGhost(Z)

Hola amigos, estuve testeando el sgte. codigo que permite ejecutar un determinado *.wav

' En la parte de declaraciones del fomulario
Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
Const SND_SYNC = &H0
Const SND_NODEFAULT = &H2
Const SND_ASYNC = &H1   

' Command1. click

Dim X As Long
X = sndPlaySound(App.Path & "\aceptar.wav", SND_SYNC Or SND_NODEFAULT)



Mi problema es que cuando doy click en aceptar el sonido.wav se ejecuta, pero los procedimientos que hay en el interior del command1 no se ejecutan hasta que termine el wav.

Estonces mi pregunta es como puedo hacer para que cuando de click en aceptar el sonido se ejecute, pero como sonido de fondo y continue con los procedimientos que hay como una suma simple por ejemplo..

He puesto un sonido.wav de 3 minutos, por ejemplo, en el load de mi form y el formulario no carga hasta que termine de tocar todo el sonido.wav.

Espero me entienda.. ayuda por favor sugerencia,

saludos
Pedro Jeri

Gorky

Cuando daba VB en el cole (hace ya unos cuantos de años) creo que uno de los ejercicios era eso mismo. Si mi memoria me juega una mala pasada lo siento pero ahi va:
Añades un objeto OLE y despues en la propiedad source buscas tu archivo de sonido. Dices el evento en el que quieres y listo.
Te repito que me perdones si no exactamente asi.

[VolkS]

Asi.

        If Musica = 0 Then
            Musica = 1
        Else
            Musica = 0
            PlayMusic         
        End If
   
Obviamente cambiando las variables que hallas puesto.

Tambien podrias poner en el evento load del form que cargue la cancion y se escuche sin apretar el boton....
Lo que haria un timer es poner la cancion una ves y al finalizar volver a empezar la cancion, y si no quieres musica lo que podrias hacer es un boton que diga
timer1.enabled = false

Y el mismo cambie a timer1.enabled = true y el caption del command xD

TheGhost(Z)

Amigos, se que ud. puede que tienes mayores conocimientos en vb. e visto tantos programas con sonido de fondo. y pues lo han hecho de alguna menera, solo que no tengo ni la minima idea de como hacerlo..

He probado con Timer y continua igual. es omo un For..

Es decir miestras no termine el FoR no puedes hacer nada.. sucede igual con el sonido.wav  no carga hasta que termne la cancion..

saludos,
Pedro Jeri


DmCNer

#5
puedes usar mejor el Windows media player de visual basic...le das en componentes y selecionas una ocion que dice windoes media player y luego le das en aceptar y te aparecera en la ventana de objetos un nuevo objeto solo lo seleccionas y lo dibujas en la ventana luego solo te vas a las propiedades y seleccionas la propiedad de personalizado y ayi te mostrara otra ventana y solo pones la ruta de tu cancion dondr dice full de lo camvias a invisible para que no te lo muestre en la ventana si no solo el sonido...

LeandroA

Hola proba asi


X = sndPlaySound(App.Path & "\aceptar.wav", SND_ASYNC Or SND_NODEFAULT)


La diferencia es el uso de la constante SND_SYNC  por SND_ASYNC , osea que crea otro hilo y todo sigue ejecutándose normalmente, osea no espera a que termine el wav

Danyfirex

 :-(  revivir un tema del 2006.

el usuario que pregunto no se conecta desde 27 Julio 2011, 14:56


Gracias por la explicación LeandroA no lo sabia.

saludos