2015-12-12 3 views
0

Я пытаюсь добавить несколько звуков в приложение, используя функцию Public ... Когда я использую абсолютный путь для своих звуков, все работает отлично, но когда я пытаясь загрузить их из ресурсов. Я не получаю никакого звука. Любые идеи, что не так?VB.NET: невозможно загрузить аудио с ресурсов

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 

Последние отлично работает, я попробовал каждый из вышеперечисленных ... Трех комментариев выше различные способов я пытался заставить его работать, но все потерпели неудачу ...

+0

Загрузите файлы из ресурсов и храните их локально и воспроизводите их. –

+0

Что значит «кешировать их локально»? В этом проблема, я не могу загрузить их из ресурсов .. Или, по крайней мере, я не использую правильную команду. – AruaS

+0

Я отправлю вам пример. –

ответ

1

Вы можете загрузить файл из ресурсов и кешировать их локально и воспроизводить их.

Открыть Resources.resx файл под My Project. Затем добавить свой файл, например YourFileName.mp3 к ресурсам, выбирая Add Existing File... тогда, когда вы хотите, чтобы воспроизвести файл, используйте этот код:

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 
+0

Прохладный !! Большое спасибо, я не знал, что вы можете это сделать! – AruaS

+0

Добро пожаловать :) –

+0

Вы можете [принять] (http://meta.stackexchange.com/a/5235/308647) ответ, нажав галочку рядом с ответом. –

0

Я знаю, что есть ответ отмечен правильно, но как только у вас есть звуковой файл в ваши ресурсы намного проще:

Нет причин использовать вызов API.

+0

Я хочу одновременно воспроизводить несколько звуковых дорожек ... – AruaS

Смежные вопросы