Пример #1
0
        static void Main(string[] args)
        {
            //StreamWriter sw = new StreamWriter("output.dat", false);
            //bw = new BinaryWriter(sw.BaseStream);

            int ret;
            IntPtr waveIn;
            WaveHdr waveHeader1 = new WaveHdr();
            WaveHdr waveHeader2 = new WaveHdr();
            GCHandle wh1 = GCHandle.Alloc(waveHeader1, GCHandleType.Pinned);
            GCHandle wh2 = GCHandle.Alloc(waveHeader2, GCHandleType.Pinned);

            WaveFormat wf = new WaveFormat();

            wf.wFormatTag = 1; // 1 is PCM
            wf.nChannels = 1;
            wf.nSamplesPerSec = sampleRate;
            wf.wBitsPerSample = 16;
            wf.nBlockAlign = 2;
            wf.cbSize = 0;
            wf.nAvgBytesPerSec = wf.nSamplesPerSec * wf.wBitsPerSample / 8;

            d = new WaveDelegate(waveInCallback);
            int devID = -1;

            int callbackInstance = 0;

            ret = waveInOpen(out waveIn, devID, ref wf, d,
                ref callbackInstance, CALLBACK_FUNCTION);
            if (ret != 0)
                return;
            waveHeader1.dwBufferLength = bufferSize;
            waveHeader2.dwBufferLength = bufferSize;
            waveHeader1.lpData = Marshal.AllocHGlobal(bufferSize);
            waveHeader2.lpData = Marshal.AllocHGlobal(bufferSize);

            ret = waveInPrepareHeader(waveIn, ref waveHeader1, Marshal.SizeOf(waveHeader1));
            ret = waveInAddBuffer(waveIn, ref waveHeader1, Marshal.SizeOf(waveHeader1));
            ret = waveInPrepareHeader(waveIn, ref waveHeader2, Marshal.SizeOf(waveHeader2));
            ret = waveInAddBuffer(waveIn, ref waveHeader2, Marshal.SizeOf(waveHeader2));

            ret = waveInStart(waveIn);
            Keyboard keyboard = new Keyboard();
            while (true)
            {
                Thread.Sleep(100);
                if (keyboard.AltKeyDown == true)
                    break;
            }

            ret = waveInStop(waveIn);
            ret = waveInClose(waveIn);
            //bw.Close();
        }
Пример #2
0
 public static extern int waveOutOpen(out IntPtr hWaveOut, int uDeviceID, WaveFormat lpFormat, WaveDelegate dwCallback, int dwInstance, int dwFlags);
 private static extern MMSYSERR waveInOpen(out IntPtr phwi, int uDeviceID, ref WaveFormatEx lpFormat, WaveDelegate dwCallback, int dwInstance, int dwFlags);
Пример #4
0
 public static extern int waveInOpen(out IntPtr phwi, int uDeviceID, 
     ref WaveFormat lpFormat,
     WaveDelegate dwCallback, ref int dwInstance, int dwFlags);
Пример #5
0
 public static extern int waveOutOpen(out IntPtr hWaveOut, int uDeviceID, WaveFormat lpFormat, WaveDelegate dwCallback, int dwInstance, int dwFlags);
Пример #6
0
    public static int waveInOpen(out IntPtr phwi, uint uDeviceID, ref WaveFormatEx lpFormat, WaveDelegate dwCallback, IntPtr dwInstance, int dwFlags)
    {
        waveInOpenDelegate d = DllImportExtern.Invoke(DllImportExtern.WINMM_DLL, "waveInOpen", typeof(waveInOpenDelegate)) as waveInOpenDelegate;

        return(d(out phwi, uDeviceID, ref lpFormat, dwCallback, dwInstance, dwFlags));
    }
Пример #7
0
        static void Main(string[] args)
        {
            //StreamWriter sw = new StreamWriter("output.dat", false);
            //bw = new BinaryWriter(sw.BaseStream);

            int      ret;
            IntPtr   waveIn;
            WaveHdr  waveHeader1 = new WaveHdr();
            WaveHdr  waveHeader2 = new WaveHdr();
            GCHandle wh1         = GCHandle.Alloc(waveHeader1, GCHandleType.Pinned);
            GCHandle wh2         = GCHandle.Alloc(waveHeader2, GCHandleType.Pinned);


            WaveFormat wf = new WaveFormat();

            wf.wFormatTag      = 1; // 1 is PCM
            wf.nChannels       = 1;
            wf.nSamplesPerSec  = sampleRate;
            wf.wBitsPerSample  = 16;
            wf.nBlockAlign     = 2;
            wf.cbSize          = 0;
            wf.nAvgBytesPerSec = wf.nSamplesPerSec * wf.wBitsPerSample / 8;

            d = new WaveDelegate(waveInCallback);
            int devID = -1;


            int callbackInstance = 0;

            ret = waveInOpen(out waveIn, devID, ref wf, d,
                             ref callbackInstance, CALLBACK_FUNCTION);
            if (ret != 0)
            {
                return;
            }
            waveHeader1.dwBufferLength = bufferSize;
            waveHeader2.dwBufferLength = bufferSize;
            waveHeader1.lpData         = Marshal.AllocHGlobal(bufferSize);
            waveHeader2.lpData         = Marshal.AllocHGlobal(bufferSize);

            ret = waveInPrepareHeader(waveIn, ref waveHeader1, Marshal.SizeOf(waveHeader1));
            ret = waveInAddBuffer(waveIn, ref waveHeader1, Marshal.SizeOf(waveHeader1));
            ret = waveInPrepareHeader(waveIn, ref waveHeader2, Marshal.SizeOf(waveHeader2));
            ret = waveInAddBuffer(waveIn, ref waveHeader2, Marshal.SizeOf(waveHeader2));

            ret = waveInStart(waveIn);
            Keyboard keyboard = new Keyboard();

            while (true)
            {
                Thread.Sleep(100);
                if (keyboard.AltKeyDown == true)
                {
                    break;
                }
            }

            ret = waveInStop(waveIn);
            ret = waveInClose(waveIn);
            //bw.Close();
        }
Пример #8
0
 public static extern int waveInOpen(out IntPtr phwi, int uDeviceID, WaveFormat lpFormat, WaveDelegate dwCallback, IntPtr dwInstance, int dwFlags);
Пример #9
0
 private static extern MMSYSERR waveInOpen(out IntPtr phwi, int uDeviceID, ref WAVEFORMATEX lpFormat, WaveDelegate dwCallback, int dwInstance, int dwFlags);
Пример #10
0
 public void ClearWave()
 {
     wave = null;
 }
Пример #11
0
 //打开麦克风
 public static extern int waveInOpen(out IntPtr phwi, int uDeviceID, ref WaveFormatEx lpFormat, WaveDelegate dwCallback, UInt32 dwInstance, UInt32 dwFlags);
Пример #12
0
 private static extern uint waveOutOpen(out IntPtr waveOutHandle, int deviceId, WAVEFORMATEX format, WaveDelegate callback,
                                        uint delegateInstance, uint flags);
Пример #13
0
 public static extern Int32 waveOutOpen(out IntPtr hWaveOut, Int32 uDeviceID, WaveFormat lpFormat, WaveDelegate dwCallback, Int32 dwInstance, Int32 dwFlags);