Pregunta

He añadido un archivo WAV a mi aplicación Windows Mobile y quiero usar MobilePlaySound en coredll.dll para reproducirlo.

El nombre de archivo es una de sus parámetros:


MobilePlaySound(fileName, IntPtr.Zero, (int)(Flags.SND_ASYNC | Flags.SND_FILENAME));

creo 'sonido' una nueva carpeta, añadir 'Start.wav' al proyecto y establezca su propiedad 'Construir Acción' a 'recursos incrustados'.

Entonces me puse el nombre de archivo:


fileName = "\\Program Files\\myApp\\sound\\start.wav";

Pero el sonido no juega en absoluto. ¿Cuál es la correcta, entonces rutaArchivo?

¿Fue útil?

Solución

Al establecer la acción de generación para "Recurso incrustado" el archivo se compila en su ensamblaje en un recurso. Esto significa que el archivo wav se integrará en el archivo .exe o .dll, y no va a aparecer en el sistema de archivos. Debido a esto, no se puede pasar un nombre de archivo para el wav a algún método que lo necesita.

Hay dos formas de resolverlo: si realmente quiere tener el archivo WAV como un resouce incorporado, tendrá que extraer el recurso y escribir en un archivo en el sistema de archivos en tiempo de ejecución. A continuación, puede pasar el nombre de ese archivo con el método MobilePlaySound. Yo personalmente no elegiría esta solución en este caso.

La otra solución es no incrustar el archivo WAV como un recurso, pero lo dejó vivo como su propio archivo en el sistema de archivos. Para lograr este objetivo, establecer la acción de construcción de "contenido" y establecer la "copia a Directorio de salida" a la configuración ya sea "Copiar siempre" o "Copiar si es más nuevo". Esto hará que el compilador incluye el archivo en la salida. En este caso, su suposición acerca de que el archivo debe ser es correcta.

En resumen:

  • Construir action = "contenido"
  • Copiar a directorio de salida = "Copiar siempre" o "Copiar si es más nuevo"
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top