C# 用API播放聲音

來源:互聯網
上載者:User
 

類:

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();

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.