2009-05-18 12 views
1

Windows Mobileアプリケーションにwavファイルを追加しました。CoreDll.dllでMobilePlaySoundを使用して再生したいとします。Windows Mobileアプリケーションにファイルのファイルパスを追加するにはどうすればよいですか?

fileNameには、そのパラメータの一つである:


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

私は「埋め込みリソース」に「ビルドアクション」プロジェクトに「start.wav」を追加し、そのプロパティを設定し、新しいフォルダ「音」を作成します。

は、それから私は、ファイル名に設定します。


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

をしかし、音がまったく再生されません。正しいファイルパスは何ですか?

答えて

1

ビルドアクションを "組み込みリソース"に設定すると、ファイルはアセンブリとしてリソースとしてコンパイルされます。つまり、wavファイルは.exeまたは.dllファイルに埋め込まれ、ファイルシステムには表示されません。このため、wavのファイル名を必要とするメソッドに渡すことはできません。

解決方法は2つあります。wavファイルを埋め込みリソースとして実際に使用する場合、実行時にリソースを抽出してファイルシステムのファイルに書き込む必要があります。そのファイルの名前をMobilePlaySoundメソッドに渡すことができます。この場合、私は個人的にこのソリューションを選択しません。

もう1つの解決策は、ではなく、です.WAVファイルをリソースとして埋め込みますが、ファイルシステム内で独自のファイルとして保存させることができます。これを実現するには、ビルドアクションを「コンテンツ」に設定し、「コピー先ディレクトリ」設定を「常にコピーする」または「新しい場合はコピーする」に設定します。これにより、コンパイラはファイルを出力に含めます。この場合、ファイルがどこにあるかについてのあなたの仮定は正しいです。要するに

  • ビルドアクション=「コンテンツ」出力ディレクトリ=へ
  • コピー「のコピーは常に」または私は、ビルドアクションに設定した
+0

「新しい場合はコピーします」 "Embedded Resource"は、fileNameが正しいですか?なぜそれは音を再生することを拒否? –

+0

私の更新答えを見てください。私はもう少し詳しく説明しました。 –

+0

ビルドアクションをなしに変更し、常にコピーを設定しましたが、サウンドはまだ再生を拒否します。何が問題なのでしょうか? –

関連する問題