C# 用API播放声音

 

类:

using  System; 
using  System.Collections; 
using  System.ComponentModel; 
using  System.Runtime.InteropServices;

namespace   PlaySound
{
 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  ) 
  { 
   switch(strFileName) 
   { 
    case  "start":  strFileName=@"..\..\sound\start.WAV";              break; 
    case  "back":  strFileName=@"..\..\sound\back.WAV";                  break; 
    case  "fall":  strFileName=@"..\..\sound\fall.WAV";                  break;         
    case  "huiqi":  strFileName=@"..\..\sound\huiqi.WAV";              break; 
    case  "huiqiend":  strFileName=@"..\..\sound\huiqiend.WAV";  break; 
    case  "jiangjun":  strFileName=@"..\..\sound\jiangjun.WAV";  break; 
    case  "kill":  strFileName=@"..\..\sound\kill.WAV";                  break; 
    case  "win":  strFileName=@"..\..\sound\win.WAV";                      break; 
    case  "move":  strFileName=@".\start.WAV";                  break; 
    case  "hold":  strFileName=@".\stop.WAV";                  break; 
    case  "no":  strFileName=@"..\..\sound\no.WAV";                          break; 
    case  "popup":  strFileName=@"..\..\sound\popup.WAV";              break; 
    case  "mayfall":  strFileName=@"..\..\sound\mayfall.WAV";      break; 
   } 
 
   //调用PlaySound方法,播放音乐 
   Helpers.PlaySound(strFileName,  IntPtr.Zero,Helpers.PlaySoundFlags.SND_ASYNC);                       
  }

//关闭
  public  static  void  Stop() 
  {   
   Helpers.PlaySound(null,  IntPtr.Zero,Helpers.PlaySoundFlags.SND_ASYNC);                       
  }
 }
}

以上保存为 cs 类文件

在使用的地方加:

using PlaySound;

在要播放的地方 :Sound .Play("hold");

在要停止的地方 :Sound .Stop();

posted @ 2006-10-30 13:52  小y  阅读(1003)  评论(0编辑  收藏  举报