El dispositivo especificado no está abierto o MCI no lo reconoce.

Colapsar
X
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar todos
nuevos mensajes

  • El dispositivo especificado no está abierto o MCI no lo reconoce.

    holas compañeros, a que no saben quien soy??

    sii, el preguntón este...
    jajaja.

    sigo con mi proyecto con audio, y había pensado que todo iba a ir sobre ruedas ahora que me explicaron las funciones que me faltaban, pero lamentablemente no es así.
    les cuento cual es mi dificultad en esta ocación.
    estoy tratando de reproducir varios audios a la vez, y lo consigo con las funciones SndPlaySound, y MciExecute.
    bueno, hasta ahí iba perfecto.
    les pego mejor el code de lo que hice, por que es cortito.

    Option Explicit
    Private Declare Function mciExecute Lib "winmm.dll" (ByVal lpstrCommand As String) As Long
    Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
    Private Const SND_ASYNC = &H1 ' reproducción asíncrona
    Private Const SND_LOOP = &H8 'reproducción en bucle.
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

    Private Sub Form_Load()
    Call sndPlaySound(App.Path & "\archivo1.wav", SND_ASYNC Or SND_LOOP)
    call inicio
    End Sub

    Private Sub inicio()
    Call Sleep(2000)
    Call mciExecute("Play " & App.Path & "\archivo2.wav")
    End Sub

    al querer ejecutar ese code, me tira el siguiente error:
    El dispositivo especificado no está abierto o MCI no lo reconoce.

    el primer sonido se reproduce, pero el segundo no.
    lo más chistoso es que hice la prueba abriendo un proyecto nuevo, poniendo casi todo el código, pero agregando otro sonido más, en la carpeta descargas en la carpeta usuario, y los reprodujo a los tres juntos!
    y todo en la misma carpeta!
    vale aclarar, que la dirección del proyecto original, es mucho más larga.

    luego buscando en la web, encontré que puede ser por el nombre que hay que convertirlo al formato corto, pero copié todo el proyecto a la raíz del disco c, por que creí que al ser una ruta tan corta, iba a funcionar, pero me equiboqué!
    y no sé si eso de la conversión del nombre va a funcionar, si todas las referencias a los paths a los archivos, están en la misma carpeta, ustedes lo pueden ver en el code!

    esto me tiene bastante desconcertado...

    por favor, alguno sabe como arreglar este pequeño problema?

    desde ya gracias.
    y perdón por tantas preguntas.
    un saludo.

  • #2
    ¿Porque metes un Sleep(2000)? Lo feo del sleep es que te paraliza otros procesos, te recomiendo que crees esta función en algún modulo (notese que tiene un DoEvents):

    Sub Espera(nSeg As Single)
    Dim nIni As Single
    Dim nFin As Single
    nIni = Timer
    nFin = nIni + nSeg
    Do While nFin > Timer
    DoEvents
    Loop
    End Sub

    Y luego cambias:
    Call Sleep(2000)

    por:
    Call Espera(2)

    Me cuentas si en algo ayudó.
    --------------------------------
    Si eres agradecido, obtendrás más...

    YAcosta

    Comentario


    • #3
      Originalmente escrito por YAcosta Ver mensaje
      ¿Porque metes un Sleep(2000)? Lo feo del sleep es que te paraliza otros procesos, te recomiendo que crees esta función en algún modulo (notese que tiene un DoEvents):

      Sub Espera(nSeg As Single)
      Dim nIni As Single
      Dim nFin As Single
      nIni = Timer
      nFin = nIni + nSeg
      Do While nFin > Timer
      DoEvents
      Loop
      End Sub

      Y luego cambias:
      Call Sleep(2000)

      por:
      Call Espera(2)

      Me cuentas si en algo ayudó.
      aa OK, no sabía eso.
      lo voy a aplicar a mi proyecto.
      gracias por el dato.

      un saludo.

      Comentario

      Trabajando...
      X