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(); }
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);
public static extern int waveInOpen(out IntPtr phwi, int uDeviceID, ref WaveFormat lpFormat, WaveDelegate dwCallback, ref int dwInstance, int dwFlags);
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)); }
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(); }
public static extern int waveInOpen(out IntPtr phwi, int uDeviceID, WaveFormat lpFormat, WaveDelegate dwCallback, IntPtr dwInstance, int dwFlags);
private static extern MMSYSERR waveInOpen(out IntPtr phwi, int uDeviceID, ref WAVEFORMATEX lpFormat, WaveDelegate dwCallback, int dwInstance, int dwFlags);
public void ClearWave() { wave = null; }
//打开麦克风 public static extern int waveInOpen(out IntPtr phwi, int uDeviceID, ref WaveFormatEx lpFormat, WaveDelegate dwCallback, UInt32 dwInstance, UInt32 dwFlags);
private static extern uint waveOutOpen(out IntPtr waveOutHandle, int deviceId, WAVEFORMATEX format, WaveDelegate callback, uint delegateInstance, uint flags);
public static extern Int32 waveOutOpen(out IntPtr hWaveOut, Int32 uDeviceID, WaveFormat lpFormat, WaveDelegate dwCallback, Int32 dwInstance, Int32 dwFlags);