Как получить путь к файлам, добавленным в приложение Windows Mobile?

StackOverflow https://stackoverflow.com/questions/876679

Вопрос

Я добавил wav-файл в свое приложение для Windows Mobile и хочу использовать MobilePlaySound в CoreDll.dll для его воспроизведения.

Имя файла является одним из его параметров:


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

Я создаю новую папку 'sound', добавляю 'start.wav' в проект и устанавливаю для его свойства 'Build Action' значение 'Встроенные ресурсы'.

Затем я устанавливаю имя файла:


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

Но звук вообще не воспроизводится.Тогда каков правильный путь к файлу?

Это было полезно?

Решение

Установив для действия сборки значение "Встроенный ресурс", файл будет скомпилирован в вашу сборку в качестве ресурса.Это означает, что файл wav будет встроен в ваш файл .exe или .dll и не будет отображаться в файловой системе.Из-за этого вы не можете передать имя файла для wav какому-либо методу, которому это необходимо.

Есть два способа решить эту проблему:если вы действительно хотите иметь wav-файл в качестве встроенного ресурса, вам нужно будет извлечь ресурс и записать его в файл в файловой системе во время выполнения.Затем вы можете передать имя этого файла методу MobilePlaySound.Лично я бы не выбрал это решение в данном случае.

Другое решение заключается в том, чтобы не вставьте wav-файл в качестве ресурса, но оставьте его в файловой системе как отдельный файл.Чтобы добиться этого, установите для действия сборки значение "Содержимое" и установите для параметра "Копировать в выходной каталог" значение "Копировать всегда" или "Копировать, если новее".Это заставит компилятор включить файл в выходные данные.В этом случае ваше предположение о том, где должен находиться файл, верно.

Короче говоря:

  • Действие сборки = "Содержимое"
  • Копировать в выходной каталог = "Копировать всегда" или "Копировать, если новее"
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top