日期:2014-05-18  浏览次数:20897 次

如何让声音停止
我做了一个播放声音的程序如下:

const   string   FILE_NAME   =   "c:\\Program   Files\\1.wav ";

internal   class   Helpers  
{
[Flags]
public   enum   PlaySoundFlags   :   int  
{
SND_SYNC   =   0x0000,     /*   play   synchronously   (default)   */
SND_ASYNC   =   0x0001,     /*   play   asynchronously   */
SND_NODEFAULT   =   0x0002,     /*   silence   (!default)   if   sound   not   found   */
SND_MEMORY   =   0x0004,     /*   pszSound   points   to   a   memory   file   */
SND_LOOP   =   0x0008,     /*   loop   the   sound   until   next   sndPlaySound   */
SND_NOSTOP   =   0x0010,     /*   don 't   stop   any   currently   playing   sound   */
SND_NOWAIT   =   0x00002000,   /*   don 't   wait   if   the   driver   is   busy   */
SND_ALIAS   =   0x00010000,   /*   name   is   a   registry   alias   */
SND_ALIAS_ID   =   0x00110000,   /*   alias   is   a   predefined   ID   */
SND_FILENAME   =   0x00020000,   /*   name   is   file   name   */
SND_RESOURCE   =   0x00040004,     /*   name   is   resource   name   or   atom   */
}

[DllImport( "winmm ")]
public   static   extern   bool   PlaySound(   string   szSound,   IntPtr   hMod,   PlaySoundFlags   flags   );
}

public   class   Sound  
{
public   static   void   Play(   string   strFileName   )
{
Helpers.PlaySound(   strFileName,   IntPtr.Zero,   Helpers.PlaySoundFlags.SND_FILENAME   |   Helpers.PlaySoundFlags.SND_ASYNC   );
}
}

Sound.Play(FILE_NAME);

但是如何让声音停止啊,请各位前辈指点^_^


------解决方案--------------------
Helpers.PlaySound( strFileName, IntPtr.Zero, Helpers.PlaySoundFlags.SND_FILENAME | Helpers.PlaySoundFlags.SND_ASYNC );

===>

Helpers.PlaySound( strFileName, IntPtr.Zero, Helpers.PlaySoundFlags.SND_FILENAME | Helpers.PlaySoundFlags.SND_LOOP | Helpers.PlaySoundFlags.SND_SYNC );

------解决方案--------------------
1.关闭音响。
2.关闭耳朵。
3.试试下面的代码:

//Play
Helpers.PlaySound(strFileName, IntPtr.Zero, Helpers.PlaySoundFlags.SND_FILENAME | Helpers.PlaySoundFlags.SND_ASYNC | Helpers.PlaySoundFlags.SND_NODEFAULT | Helpers.PlaySoundFlags.SND_LOOP);

//Stop
Helpers.PlaySound( " ", IntPtr.Zero, Helpers.PlaySoundFlags.SND_PURGE || Helpers.PlaySoundFlags.SND_NODEFAULT);