Pergunta

Eu adicionei um arquivo WAV para meu aplicativo Windows Mobile e eu quero usar MobilePlaySound em Coredll.dll para jogá-lo.

O nome do arquivo é um dos seus parâmetros:


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

I criar uma nova pasta 'sound', adicione 'start.wav' para o projeto e defina a propriedade 'Build Action' para 'recursos incorporados'.

Então eu definir o filename:


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

Mas o som não é reproduzido em tudo. Qual é a filePath correta, então?

Foi útil?

Solução

Ao definir a ação de compilação de "Embedded Resource" o arquivo será compilado no seu conjunto como um recurso. Isso significa que o arquivo WAV será incorporado em seu arquivo .exe ou .dll, e não aparecerão no sistema de arquivos. Devido a isso, você não pode passar um nome para o wav a algum método que precisa dele.

Existem duas maneiras de resolver isso: se você realmente quer ter o arquivo wav como um resouce embutido, você vai precisar para extrair o recurso e gravá-lo em um arquivo no sistema de arquivos em tempo de execução. Você pode, em seguida, passar o nome do arquivo para o método MobilePlaySound. Eu pessoalmente não escolheria esta solução neste caso.

A outra solução é a não incorporar o arquivo wav como um recurso, mas deixá-lo viver como seu próprio arquivo no sistema de arquivos. Para isso, definir a ação de compilação de "Conteúdo" e definir o "Copy to Output Directory" definindo a qualquer "Copiar sempre" ou "Copy if newer". Isso fará com que o compilador incluir o arquivo na saída. Neste caso, a sua suposição sobre onde o arquivo deve ser é correta.

Em resumo:

  • ação de compilação = "Content"
  • Copiar para Output Directory = "Copiar sempre" ou "Copy if newer"
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top