リソースとして埋め込まれたmp3の再生 への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者   () 投稿日時 2008/4/18 04:01:00
方法を見つけるのに大分時間がかかりましたが、 
一時ファイルを使用することで再生に成功しました。 
 
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Integer, ByVal hwndCallback As Integer) As Integer 
 
    Private FileName As String 
 
    Private Sub btnPlay_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPlay.Click 
 
        Dim asm As System.Reflection.Assembly = _ 
                    System.Reflection.Assembly.GetExecutingAssembly() 
 
        'リソースの名前 
        Dim resourceName As String = asm.GetName().Name + ".Test.mp3" 
 
        'リソースを読み込む 
        Dim strm As System.IO.Stream = _ 
            asm.GetManifestResourceStream(resourceName) 
        Dim buffer() As Byte = New Byte(strm.Length) {} 
        strm.Read(buffer, 0, CInt(buffer.Length)) 
        strm.Close() 
 
        '一時ファイルに書き込む(拡張子をmp3に変更する) 
        FileName = Replace(System.IO.Path.GetTempFileName(), "tmp", "mp3") 
        Dim fs As New System.IO.FileStream( _ 
            FileName, System.IO.FileMode.Create) 
        fs.Write(buffer, 0, CInt(buffer.Length)) 
        fs.Close() 
 
        'サウンドを再生する 
        Call mciSendString(String.Format("open ""{0}"" alias MySound", FileName), "", 0, 0) 
        Call mciSendString("play MySound", "", 0, 0) 
 
    End Sub 
 
    Private Sub btnStop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStop.Click 
 
        'サウンドを停止する 
        Call mciSendString("stop MySound", "", 0, 0) 
        Call mciSendString("close MySound", "", 0, 0) 
 
        '一時ファイルを削除する 
        IO.File.Delete(FileName) 
    End Sub 
 
temp様、考えてくださった皆様、 
ありがとうございました。
投稿者   () 投稿日時 2008/4/12 23:46:00
>>1 
temp様、レスありがとうございます。 
 
このサイトのサンプルを見なかったわけでは 
ないのですが、どう使っていいものか分からなかった 
のです。 
力及ばず申し訳ありません。 
 
例えば「既存項目の追加」でTest.mp3というファイルを 
アセンブリに追加したとして、最終的にexeファイル単独 
でそのファイルを再生したいときには紹介していただいたサンプルの 
 
Dim FileName As String = "C:\Test.mp3" 
 
の行はどのように変更すればいいのでしょうか? 
お手数おかけしてすみません。
投稿者 temp  () 投稿日時 2008/4/12 01:20:00
このサイトのサンプルではだめなのか? 
 
サウンドを再生する 
http://homepage1.nifty.com/rucio/main/dotnet/Samples/Sample060Playmp3.htm 
 
マルチメディア欄 
http://homepage1.nifty.com/rucio/main/dotnet/Samples/SmpleCnt.htm
投稿者   () 投稿日時 2008/4/11 21:56:00
こんにちは。 
いつもお世話になっております。 
VB2005を使用しています。 
 
早速ですが、リソースとして埋め込まれたmp3形式のファイルを 
再生する方法はありますでしょうか? 
 
wav形式のファイルであれば以下の方法等で再生できるようなのですが 
 
        'オーディオリソースを取り出す 
        Dim strm As System.IO.Stream = My.Resources.Test 
 
        '同期再生する 
        Dim player As New System.Media.SoundPlayer(strm) 
        player.PlaySync() 
        '後始末 
        player.Dispose() 
 
この方法だとmp3は再生できないようで・・・ 
 
何か方法があればご教授下さい。 
不足している情報等あれば指摘をお願いします。 
よろしくお願いいたします。