How to play sound in .net?

C

CM

Hi,

I used to use the following code to play sound in VB6:

Public Declare Function sndPlaySound32 Lib "winmm.dll" Alias "sndPlaySoundA"
_

(ByVal lpszSoundName As String, ByVal uFlags As Long) As Long

call sndPlaySound32("c:\WinNt\Media\ding.wav", 0)

However, .net don't recognize "call", and generate a syntax error. I just
wonder how to play sound in .net?



Thanks!

CM
 
J

james

try this:

'//Win32API
'//Both integer args and return were originally Longs - .NET Integer = vb6
Long
Declare Function PlaySound Lib "winmm.dll" _
Alias "PlaySoundA" (ByVal lpszName As String, _
ByVal hModule As Integer, _
ByVal dwFlags As Integer) As Integer

Friend Sub PlayAudio(ByVal FileName As String)
'//call win32api function to play audio (wav) file alert
Dim retval As Integer
retval = PlaySound(FileName, 0, 1)
'last param is SND_SYNC as integer
'value set to 0 plays sound Synchronously (waits until sound ends before
playing next)
'value set to 1 plays sound Asynchronously (does not wait to play next
sound)
End Sub
 
C

CM

Hi, James:
It seems can only play .wav file. How to play .rm or other sound file?
Thanks!
CM
 
P

parth_mca

hi y dun u try this.....
u'll have to import de interopeservices namespace b4 u proceed with
using API as
=========================================
Imports System.Runtime.InteropServices
''' then
Public Class API ' u can put other api's in here
<DllImport("winmm.dll")> Public Shared Function
PlaySound(ByVal lpszName As String, ByVal hModule As Long, ByVal
dwFlags As Long) As Long
End Function
End Class
=========================================
''''call this functtion as
api.playsound("any sound file path u want",lhModule,dWflags)
'''' the details of params for d above function is'''
Parameter Information:
===============================================
Private Const SND_APPLICATION = &H80 ' look for
application specific association
Private Const SND_ALIAS = &H10000 ' name is a WIN.INI [sounds]
entry
Private Const SND_ALIAS_ID = &H110000 ' name is a WIN.INI
[sounds] entry identifier
Private Const SND_ASYNC = &H1 ' play asynchronously
Private Const SND_FILENAME = &H20000 ' name is a file name
Private Const SND_LOOP = &H8 ' loop the sound until next
sndPlaySound
Private Const SND_MEMORY = &H4 ' lpszSoundName points to a
memory file
Private Const SND_NODEFAULT = &H2 ' silence not default,
if sound not found
Private Const SND_NOSTOP = &H10 ' don't stop any currently
playing sound
Private Const SND_NOWAIT = &H2000 ' don't wait if the driver
is busy
Private Const SND_PURGE = &H40 ' purge non-static
events for task
Private Const SND_RESOURCE = &H40004 ' name is a resource name
or atom
Private Const SND_SYNC = &H0 ' play synchronously
(default)
===========================================
Function Definition:
===========================================
PlaySound
The PlaySound function plays a sound specified by the given filename,
resource, or system event. (A system event may be associated with a
sound in the registry or in the WIN.INI file.)

VB4-32,5,6
Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal
lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As
Long

Operating Systems Supported
Requires Windows NT 3.1 or later; Requires Windows 95 or later
Library
Winmm
=============================================
Parameter Information in detail
=============================================
• pszSound
A string that specifies the sound to play. If this parameter is NULL,
any currently playing waveform sound is stopped. To stop a
non-waveform sound, specify SND_PURGE in the fdwSound parameter.
Three flags in fdwSound (SND_ALIAS, SND_FILENAME, and SND_RESOURCE)
determine whether the name is interpreted as an alias for a system
event, a filename, or a resource identifier. If none of these flags
are specified, PlaySound searches the registry or the WIN.INI file
for an association with the specified sound name. If an association
is found, the sound event is played. If no association is found in
the registry, the name is interpreted as a filename.

• hmod
Handle of the executable file that contains the resource to be loaded.
This parameter must be NULL unless SND_RESOURCE is specified in
fdwSound.

• fdwSound
Flags for playing the sound. The following values are defined:
SND_APPLICATION
The sound is played using an application-specific association.
SND_ALIAS
The pszSound parameter is a system-event alias in the registry or the
WIN.INI file. Do not use with either SND_FILENAME or SND_RESOURCE.
SND_ALIAS_ID
The pszSound parameter is a predefined sound identifier.
SND_ASYNC
The sound is played asynchronously and PlaySound returns immediately
after beginning the sound. To terminate an asynchronously played
waveform sound, call PlaySound with pszSound set to NULL.
SND_FILENAME
The pszSound parameter is a filename.
SND_LOOP
The sound plays repeatedly until PlaySound is called again with the
pszSound parameter set to NULL. You must also specify the SND_ASYNC
flag to indicate an asynchronous sound event.
SND_MEMORY
A sound event’s file is loaded in RAM. The parameter specified by
pszSound must point to an image of a sound in memory.
SND_NODEFAULT
No default sound event is used. If the sound cannot be found,
PlaySound returns silently without playing the default sound.
SND_NOSTOP
The specified sound event will yield to another sound event that is
already playing. If a sound cannot be played because the resource
needed to generate that sound is busy playing another sound, the
function immediately returns FALSE without playing the requested
sound.
If this flag is not specified, PlaySound attempts to stop the
currently playing sound so that the device can be used to play the
new sound.
SND_NOWAIT
If the driver is busy, return immediately without playing the sound.
SND_PURGE
Sounds are to be stopped for the calling task. If pszSound is not
NULL, all instances of the specified sound are stopped. If pszSound
is NULL, all sounds that are playing on behalf of the calling task
are stopped.
You must also specify the instance handle to stop SND_RESOURCE
events.
SND_RESOURCE
The pszSound parameter is a resource identifier; hmod must identify
the instance that contains the resource.
SND_SYNC
Synchronous playback of a sound event. PlaySound returns after the
sound event completes.


Return Values

If the function succeeds, the return value is nonzero.

If the function fails, the return value is zero. To get extended error
information, call GetLastError
 
T

Tom Shelton

hi y dun u try this.....
u'll have to import de interopeservices namespace b4 u proceed with
using API as
=========================================
Imports System.Runtime.InteropServices
''' then
Public Class API ' u can put other api's in here
<DllImport("winmm.dll")> Public Shared Function
PlaySound(ByVal lpszName As String, ByVal hModule As Long, ByVal
dwFlags As Long) As Long
End Function
End Class

This is wrong...

It should be:

Public Class API
<DllImport("winmm.dll", SetLastError:=True)> _
Public Shared Function PlaySound (ByVal lpszName As String, _
ByVal hModule As IntPtr,
ByVal dwFlags As Integer) As Boolean

End Function
End Class
=========================================
''''call this functtion as
api.playsound("any sound file path u want",lhModule,dWflags)
'''' the details of params for d above function is'''

The call would look something like:

If Not API.PlaySound("Path", IntPtr.Zero, dwFlags) Then
Dim e As New _
System.ComponentModel.Win32Exception( _
Marshal.GetLastWin32Error())

MessageBox.Show (e.Message)
End If
Parameter Information:
===============================================

You must not be using Option Strict On... Bad Idea...

Private Const SND_APPLICATION As Integer = &H80 ' look for application specific association

Repeat for all these constants...
--
Tom Shelton [MVP]
Powered By Gentoo Linux 1.4
"Oh no, not again."

- A bowl of petunias on it's way to certain death.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top