Click here to Skip to main content
15,906,333 members
Please Sign up or sign in to vote.
1.00/5 (3 votes)
See more:
any time i try to play a wave file on my computer using vb,net, it gives me a vshost.exe error when i click on a button or any blank space on the form OR move the mouse cursor over a button for some period of time....it freezes when my wave sound length is long...


i have tried different codes on playing wave sound but it still gives me a vshost.exe error ...i really need help

"THIS IS THE CODE FOR A SOUND CLASS:

Imports System
Imports System.Runtime.InteropServices
Imports System.Resources
Imports System.IO
Public Class sound
    Declare Auto Function PlaySound Lib "winmm.dll" (ByVal name _
         As String, ByVal hmod As Integer, ByVal flags As Integer) As Integer

    Declare Auto Function PlaySound Lib "winmm.dll" (ByVal name _
      As Byte(), ByVal hmod As Integer, ByVal flags As Integer) As Integer

    Public Const SND_SYNC = &H0 ' play synchronously 
    Public Const SND_ASYNC = &H9 ' play asynchronously 
    Public Const SND_MEMORY = &H4  'Play wav in memory
    Public Const SND_ALIAS = &H10000 'Play system alias wav 
    Public Const SND_NODEFAULT = &H2
    Public Const SND_FILENAME = &H20000 ' name is file name 
    Public Const SND_RESOURCE = &H40004 ' name is resource name or atom 

    Public Shared Sub PlayWaveFile(ByVal fileWaveFullPath As String)
        Try
            PlaySound(fileWaveFullPath, 0, SND_FILENAME)
        Catch
        End Try
    End Sub
   

    Public Shared Sub PlayWaveResource(ByVal WaveResourceName As String)
        
        ' get the namespace 
        Dim strNameSpace As String = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name.ToString()

        ' get the resource into a stream
        Dim resourceStream As Stream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(strNameSpace + "." + WaveResourceName)
        If resourceStream Is Nothing Then Exit Sub

        ' bring stream into a byte array
        Dim wavData As Byte()
        ReDim wavData(CInt(resourceStream.Length))
        resourceStream.Read(wavData, 0, CInt(resourceStream.Length))

        ' play the resource
        PlaySound(wavData, 0&, SND_ASYNC Or SND_MEMORY)

    End Sub

    
    Public Shared Sub PlayWaveSystem(ByVal SystemWaveName As String)
        
        PlaySound(SystemWaveName, 0&, SND_ASYNC)

    End Sub
End Class


THIS CODE IS ALSO FOR A BUTTON CLICK

VB
 Public Class Frm_sound

    Inherits System.Windows.Forms.Form
    Friend WithEvents btnEmbe As System.Windows.Forms.Button
    Private Sub btnembed_Click(ByVal sender As System.Object, ByVal e As System.EventArgs, Optional ByVal MaxLoops As Integer = 1) Handles btnEmbed.Click
        sound.PlayWaveResource("01 In The Morning Light.wav")
    End Sub
End Class
Posted
Updated 2-May-11 15:29pm
v3
Comments
Tarakeshwar Reddy 23-Apr-11 18:11pm    
How are you playing it using VB.Net? Can you paste part of the code you are using to play it?
Sandeep Mewara 24-Apr-11 1:46am    
It would greatly help members to comment anything once you share some related code snippet. Update the question with the same.
Tarakeshwar Reddy 2-May-11 21:30pm    
Added pre tags

1 solution

See the following article Play Waves in VB.NET[^]
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900