C# 用API播放声音

it2022-05-09  29

类:

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

转载于:https://www.cnblogs.com/tuyile006/archive/2006/10/30/544474.html

相关资源:C#实现通过winmm.dll控制声音播放的方法

最新回复(0)