Visual Basic - NO LO ENTIENDO

Life is soft - evento anual de software empresarial
 
Vista:

NO LO ENTIENDO

Publicado por JAVIER (90 intervenciones) el 30/11/2009 03:04:59
POR FAVOR..... me estoy volviendo loco.....

Quiero reproducir un archivo de sonido en un programa......

Y ASI FUNCIONA PERFECTAMENTE.............
Resp = mciExecute("Play C:\TRUMPET1.wav")

¡¡¡¡¡ Y ASI NO FUNCIONA NI A TIROS¡¡¡¡
Resp = mciExecute("Play C:\CARPETA \TRUMPET1.wav")

(Y en la CARPETA esta tambien el archivo WAV. Os lo aseguro)

Y ASI TAMPOCO FUNCIONA
'Resp = mciExecute("Play " & App.Path & "\TRUMPET1.wav")

¿Me puede algun experto explicar ¿PORQUEEEEE?

Por si le sirve de ayuda el error que me da es...............
"El dispositivo especificado no esta abierto o MCI no lo reconoce"

GRACIAS.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:NO LO ENTIENDO

Publicado por Gonzalo (4 intervenciones) el 30/11/2009 15:51:14
Yo lo realizo de esta manera sin ningun problema

Primero declaro al funcion

Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long

Despues pongo en el lugar donde quiero se reprodusca el wav

Cansion = App.Path + "/click.wav"
f = sndPlaySound(Cansion, SND_SYNC)

y me funciona sin problemas. Obiamente debe estar ell wav en la ruta que pongas.

Espero te sirva
Gonzalo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:NO LO ENTIENDO

Publicado por JAVIER (90 intervenciones) el 30/11/2009 23:54:18
Gracias Gonzalo por tu respuesta.

Si. Tu codigo funciona bien..... PERO TIENE UN PROBLEMA¡¡¡¡
y es que NO ES INDEPENDIENTE. No funciona de forma idependiente.

O sea, que mientras esta sonando el fichero TODO LO DEMAS SE
QUEDA PARADO hasta que no finaliza el fichero de sonido.
¿Me explico?

Lo he probado asi..........(que es como me lo enviaste tu)

Cansion = App.Path + "/click.wav"
f = sndPlaySound(Cansion, SND_SYNC)

Y tambien lo he probado asi..........

Cansion = App.Path + "/click.wav"
f = sndPlaySound(Cansion, SND_ASYNC)

Y en los dos casos me pasa lo mismo. Que todo queda parado hasta
que no ha finalizado la musica.

En mi programa mientras suena la trompeta hay una pantalla que
parpadea..... Pues con tu codigo el parpadeo se para y va a golpes.
¿me explico?

Con mi codigo, eso no pasaba......

ASI FUNCIONA PERFECTAMENTE.............
Resp = mciExecute("Play C:\TRUMPET1.wav")

PERO SI LE PONGO UNA CARPETA......
Resp = mciExecute("Play C:\CARPETA \TRUMPET1.wav")
¡¡¡¡YA NO FUNCIONA¡¡¡¡
¡¡¡¡ Y jod.... que no lo entiendo¡¡¡
(Y ayer me tire 3 horas intentandolo. Y nada de nada)
Tiene narices la cosa.

Gracias Gonzalo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:no lo entiendo (SOLUCIONADO)

Publicado por JAVIER (90 intervenciones) el 01/12/2009 02:14:03
YA LO SOLUCIONEEEEEEEEEE¡¡¡¡

Gracias Gonzalo.......

Lo solucione asi....

En Controles poner el control MICROSOFT MULTIMEDIA (6.0)

En el Form_Load........
MMControl1.Notify = False
MMControl1.Wait = True
MMControl1.Shareable = False
MMControl1.DeviceType = "WaveAudio"
MMControl1.FileName = App.Path & "\TRUMPET1.wav"

' Abre el dispositivo MCI WaveAudio.
MMControl1.Command = "Open"
End Sub

En el Timer1_timer()

MMControl1.Command = "play"

y hay que poner este evento, para que se vaya repitiendo

Private Sub MMControl1_Done(NotifyCode As Integer)
If (NotifyCode = 1) Then
MMControl1.Command = "prev"
MMControl1.Command = "play"
End If
end sub

Y el control lo pones a Visible=false y asi no molesta

Y FUNCIONA DE COÑA...... NO INTERFIERE PARA NADA EN
EL PROGRAMA. VA COMPLETAMENTE LIBRE....

Lo he solucionado...... aunque sigo sin comprender porque
narices no me funcionaba mi metodo....

Pero bueno.... ya esta solucionado.

UN SALUDO.
Y GRACIAS.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

NO LO ENTIENDO

Publicado por wyxchari (3 intervenciones) el 23/07/2011 13:38:11
1.- mciExecute debe recibir la ruta con nombre corto:
Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" _
(ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal lBuffer As Long) As Long
Dim q As String * 250 ' Obtenemos el Path corto del archivo de música
GetShortPathName archivo, q, 164
archivocorto = Replace(q, Chr(0), "") 'Sacamos los nulos al path

2.- - Por defecto Windows no puede reproducir todos los archivos mp3 ya que hay varias variedades de mp3 como son: MPEG Layer-3, mp3PRO, Lame MP3, PowerPack Lame MP3 Encoder. Para hacerlo necesitas tener instalados los codecs correspondientes o transformar el archivo porque sino dará error "Ha ocurrido un problema al inicializar MCI".
- Para transformar un archivo mp3, lo abres con el Nero Wave Editor y lo salvas como PCM Wav. Luego abres éste con la Grabadora de sonidos de Windows y lo salvas como MPEG Layer-3.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar