Как получить путь к файлу, добавляемый в приложение Windows Mobile? - PullRequest
1 голос
/ 18 мая 2009

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

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


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

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

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


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

Но звук не играет вообще. Какой правильный filePath тогда?

1 Ответ

1 голос
/ 18 мая 2009

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

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

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

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

  • Build action = "Content"
  • Копировать в выходной каталог = "Копировать всегда" или "Копировать, если новее"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...