본문 바로가기
Application/C#.net

Simple C# Class to Play .WAV Files in .NET

by 현이빈이 2008. 11. 27.
반응형

class classWavPlay
  {

    //[DllImport("WinMM.dll")]
    [DllImport("winmm.dll", EntryPoint="PlaySound",CharSet=CharSet.Auto)]
   

    //public static extern bool PlaySound(byte[] wfname, int fuSound);
    private static extern int PlaySound(String pszSound, int hmod, int falgs);


    //  flag values for SoundFlags argument on PlaySound
    public int SND_SYNC = 0x0000;      // play synchronously
    // (default)
    public int SND_ASYNC = 0x0001;      // play asynchronously
    public int SND_NODEFAULT = 0x0002;      // silence (!default)
    // if sound not found
    public int SND_MEMORY = 0x0004;      // pszSound points to
    // a memory file
    public int SND_LOOP = 0x0008;      // loop the sound until
    // next sndPlaySound
    public int SND_NOSTOP = 0x0010;      // don't stop any
    // currently playing
    // sound

    public int SND_NOWAIT = 0x00002000; // don't wait if the
    // driver is busy
    public int SND_ALIAS = 0x00010000; // name is a Registry
    // alias
    public int SND_ALIAS_ID = 0x00110000; // alias is a predefined
    // ID
    public int SND_FILENAME = 0x00020000; // name is file name
    public int SND_RESOURCE = 0x00040004; // name is resource name
    // or atom
    public int SND_PURGE = 0x0040;     // purge non-static
    // events for task
    public int SND_APPLICATION = 0x0080;     // look for application-
    // specific association

    //-----------------------------------------------------------------
    public void Play(string wfname, int SoundFlags)
    {

      if (File.Exists(wfname))
      {
        PlaySound(wfname, 0, (int)(SND_ASYNC | SND_FILENAME | SND_NOWAIT));
      }
      else
      {
        PlaySound(null, 0,(int)(SND_ASYNC | SND_FILENAME | SND_NOWAIT ));
      }
           
      //byte[] bname = new Byte[256];    //Max path length
      //bname = System.Text.Encoding.ASCII.GetBytes(wfname);
      //PlaySound(bname, SoundFlags);
    }
   
    public void StopPlay()
    {
      PlaySound(null, 0, SND_PURGE);
    }
   


    public static void PlaySoundEvent(string pszSound)
    {  
      //PlaySound(pszSound,0,(int)(SND_ASYNC | SND_ALIAS | SND_NOWAIT));
    }
   
    //End WAVSounds class

  }


반응형