using System;
using System.Runtime.InteropServices;
using System.Resources;
using System.IO;
using System.Threading;

namespace edu.jhu.Cas.Test
{
	public class Noiseage
	{
		public const UInt32 SND_ASYNC = 1;
		public const UInt32 SND_MEMORY = 4;
		
		[DllImport("winmm.dll", EntryPoint="PlaySound",CharSet=CharSet.Auto)]
		private static extern int PlaySound(String pszSound, int hmod, int falgs);
		
		public enum SND
		{
			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 pre d ID */
			SND_FILENAME     = 0x00020000, /* name is file name */
			SND_RESOURCE     = 0x00040004, /* name is resource name or atom */
			SND_PURGE        = 0x0040,  /* purge non-static events for task */
			SND_APPLICATION  = 0x0080 /* look for application specific association */
		}

		public class Noiser
		{
			public Noiser(string ww,int ii)
			{
				w = ww; i = ii;
			}
			string w; int i;
			public void Noise()
			{
				while(true)
				{
					string strNameSpace=
						System.Reflection.Assembly.GetExecutingAssembly().GetName().Name.ToString();
					PlaySound(w,0,
						(int) (SND.SND_ASYNC | SND.SND_FILENAME | SND.SND_NOWAIT));
					Thread.Sleep(i);
				}
			}
		}

		public void BeAnnoying()
		{
			//Go("s.wav",100);
			Go("aa.wav",100);
			
		}

		public void Go(string s,int i)
		{
			Noiser n = new Noiser(s,i);
			Thread t = new Thread(new ThreadStart(n.Noise));
			t.Start();
		}
	}
}