简体   繁体   中英

VB.NET: Can't load audio from resources

I'm trying to add multiple sounds on an application using a Public function... When I use the absolute path for my sounds everything works perfectly, but when I'm trying to load them from Resources I don't get any sound output.. Any ideas what's wrong?

Public Class Form1

    Public 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

    Dim musicAlias As String = "myAudio"


    'Dim musicPath As String = "C:\Users\Teo\Documents\Visual Studio 2015\Projects\test\test\Resources\sound.mp3"
    'Dim musicPath As String = "Resources\sound.mp3"
    'Dim musicPath As String = My.Resources.ResourceManager.GetObject("sound.mp3")
    Dim musicPath2 As String = "C:\Users\Teo\Desktop\sound.mp3"


    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        mciSendString("Open " & musicPath & " alias " & musicAlias, CStr(0), 0, 0)
        mciSendString("play " & musicAlias, CStr(0), 0, 0)
    End Sub
End Class

The last one works perfectly, I tried every one of the above... The three comments above are different ways I tried to make it work, but all failed...

You can load the file from resources and cache them locally and play them.

Open Resources.resx file under My Project . Then add your file for example YourFileName.mp3 to the resources by choosing Add Existing File... then when you want to play the file, use this code:

Dim file As String = System.IO.Path.Combine(Application.StartupPath, "YourFileName.mp3")
If (Not System.IO.File.Exists(file)) Then
    System.IO.File.WriteAllBytes(file, My.Resources.YourFileName)
End If

'Now the file exists locally
'Play the file here

I know this has an answer marked correct, but once you have a sound file in your Resources, it's much easier this way:

My.Computer.Audio.Play(My.Resources.MyCoolSound, AudioPlayMode.Background)

No reason to use an API call.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM