VB Express 2012 (VB.net) を使用して、.wav 効果音と .mp3 バックグラウンド ミュージックを持つ学校での教育用ゲームを作成しています。私のコードを以下に示します。どのパソコンでも問題なく動作しますが、WMPLib.WindowsMediaPlayer を使用して mp3 を再生する方法が原因で、アプリケーション実行ファイルを含むフォルダーへのファイルの書き込み/削除の許可が与えられていないコンピューターでは問題が発生します。wmp は mp3 ファイル用の外部ファイルへの URL を必要とするため (なぜ???)、my.resource フォルダーからクライアント コンピューターに mp3 ファイルを書き込んで有効な URL を取得し、プログラムを閉じるときにそれらを削除する必要があります。許可が与えられていない場合、これは失敗します。
ファイルをクライアント コンピューターに書き込む必要がない wmp.dll を使用して、リリースされたアプリケーションの my.resources から mp3 ファイルを再生する別の方法はありますか? おそらくある種のストリーミング?私はこれまでその領域を掘り下げたことはありませんでした。ところで、アプリケーションのサイズが大きすぎるため、mp3 を wav ファイルに変換するのは無理があります。(私のコードスニペットは例として 1 つだけを示していますが、私は多くの mp3 を持っています。これが私のコードです:
私が使用している効果音について
My.Computer.Audio.Play(My.Resources.soundeffect, AudioPlayMode.Background)
バックグラウンド ミュージックについては、サウンド エフェクトによって中断されずに曲が再生されるように、wmp.dll 参照を追加し、次のコードを使用します。
Dim WithEvents Player As New WMPLib.WindowsMediaPlayer
Player.settings.setMode("Loop", True)
Dim appPath As String
'get the location of application execute file
appPath = Application.StartupPath & "\" & "SongNameHere" & ".mp3"
'write the mp3 file to the folder containing the execute file so wmp accepts the URL
My.Computer.FileSystem.WriteAllBytes(appPath,My.Resources.ResourceManager.GetObject("SongNameHere"), False)
'assign the valid URL to the wmp player, it autostarts.
Player.URL = appPath
そして、念のため、.formclose で次のコードを使用して曲を削除します。
My.Computer.FileSystem.DeleteFile(Application.StartupPath & "\" & "SongNameHere" & ".mp3")