UserForm

27/08/2005 - 09:31 por Luis Caro | Informe spam
Saludos a todos.
Es posible insertar Sonido en un UserForm?


Cordialmente
Luis Caro
http://usuarios.lycos.es/maderascolombianas2/
http://www.geocities.com/maderascolombianas2002
 

Leer las respuestas

#1 Héctor Miguel
27/08/2005 - 23:26 | Informe spam
hola, Luis !

Es posible insertar Sonido en un UserForm?



1) la manera mas 'comun'... es hacer 'llamadas' a las API's del Windows MediaManager
y existen [al menos] tres 'sub-secciones' del WMM que se pueden utilizar:
- PlaySound -> 'mas util' cuando 'falla' la busqueda del archivo 'a tocar'
- sndPlaySound -> 'mas util' cuando 'necesitas' que la musica toque 'mientras la macro continua'
- mciExecute -> igual a la anterior, 'acepta' las extensiones 'midi' [como -largos- archivos mp3, midi, etc.]
-> NO TODOS los 'formatos de compresion' estan 'cubiertos' POR TODAS las opciones anteriores :( <-
[tal parece que todo tiene sus 'pros' y 'contras'] :((
2) te expongo al final las 'declaraciones' de funciones para llamar a las API's [selecciona la que mejor te convenga]
3) podrias 'ejecutar' la musica [p.e.] al activarse el formulario... o al pulsar algun boton de comando [elige tu] :))

si cualquier duda [o informacion adicional]... comentas?
saludos,
hector.
== op 1 en el modulo de codigo del formulario =Private Declare Function Usar_mciExecute _
Lib "winmm.dll" Alias "mciExecute" ( _
ByVal Comando As String) As Long
Private Sub UserForm_Activate()
Dim Archivo As String
Archivo = "C:\Windows\Media\Baby_01.mid"
Usar_mciExecute "Play " & Archivo
End Sub

notas: si la musica es muy 'larga'... se seguira escuchando aun despues de cerrar el formulario :))
para detenerla, usa la misma funcion, 'pero' con 'Stop'
[p.e.] Usar_mciExecute "Stop " & Archivo <=MISMO ARCHIVO <= OJO
-> solo una 'observacion'... la cadena 'completa' [ruta + directorio/s + archivo + EXTension]
-> NO debera tener 'espacios' <== [p.e. C:\Mis doc\este archivo.mid' o... C:\Mi mus...]
[te mandaria un error 'diciendo': mmsystem263 no es un componente MCI registrado...] :((
[a menos que 'recortes' la ruta completa al tipo de archivos MS-DOS de 8+3]

== op 2 en el modulo de codigo del formulario =Private Declare Function _
Usar_sndPlaySound _
Lib "winmm.dll" _
Alias "sndPlaySoundA" ( _
ByVal Archivo As String, _
ByVal Continua As Long) As Long
Private Sub UserForm_Activate()
Dim EsteArchivo As String
EsteArchivo = "C:\Windows\Media\Entrada de Windows XP.wav"
Usar_sndPlaySound EsteArchivo, 1
End Sub

notas: 1) con el parametro [Continua] en cero... la ejecucion de una macro se detiene 'mientras la musica toca'
2) con el parametro [Continua] en UNO... la ejecucion de una macro continua 'mientras la musica toca'

== op 3 en el modulo de codigo del formulario =Private Declare Function _
Usar_PlaySound _
Lib "winmm.dll" _
Alias "PlaySoundA" ( _
ByVal Archivo As String, _
ByVal Modulo As Long, _
ByVal Bandera As Long) As Long
Private Sub UserForm_Activate()
Dim EsteArchivo As String
EsteArchivo = "C:\Windows\Media\Entrada de Windows XP.wav"
Usar_PlaySound EsteArchivo EsteArchivo, 0&, &H1 Or &H20000
End Sub

notas: 'segun' el archivo que especifiques...
si NO 'existe'... 'tocara' un sonido 'asincrono' [speakers de la pc]
si SI 'existe'...
- si 'se puede tocar'... se toca
- si NO 'se puede tocar'... ni modo !!!... no hara 'sonido alguno' ;)

Preguntas similares