1

Windows Mobile アプリに wav ファイルを追加しました。CoreDll.dll で MobilePlaySound を使用して再生したいと考えています。

fileName はそのパラメーターの 1 つです。


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";

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

4

1 に答える 1

1

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

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

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

要するに:

  • ビルド アクション = 「コンテンツ」
  • 出力ディレクトリにコピー = 「常にコピー」または「新しい場合はコピー」
于 2009-05-18T08:06:17.410 に答える