[問題] 使用waveout播放wav

看板C_Sharp作者 (越夜越美麗)時間16年前 (2009/09/05 15:53), 編輯推噓1(102)
留言3則, 3人參與, 最新討論串1/1
小弟之前在mobile上寫WAV錄放等相關程式 因某些因素必須在PC上寫個相似程式 且在有時間限制下希望不要在架構上有太多的改變 所以小弟就重新新增一個project 將code慢慢copy過來 在PDA上 小弟使用waveoutOpen、waveoutPrepareHeader、 waveoutWrite等function 且可以將wav完整播放 然而重新寫在PC上的code.... 似乎就遇到了瓶頸 ---------------------------------------------------------------------- 起初執行時,有error顯示說沒辦法找到coredll.dll 所以在網路上搜尋了waveout的相關資訊..... 在.Net Compact Framework 上需使用"coredll.dll" 而在.Net Framework 上則是用 "winmm.dll" 所以小弟就將code部份作修改 [DllImport("winmm.dll")] protected static extern Wave.MMSYSERR waveOutOpen (ref IntPtr phwo, uint uDeviceID, Wave.WAVEFORMATEX pwfx, IntPtr dwCallback, uint dwInstance, uint fdwOpen); 但在使用waveoutopen時回傳值return了BADFORMAT 或者 INVALPARAM 這是因為waveoutopen 在 winmm 和 coredll 所要input的不相同嗎 還是其他因素? 另外在PINVOKE .net網站上看到 (http://pinvoke.net/default.aspx/winmm/waveOutOpen.html) [DllImport("winmm.dll", SetLastError = true, CharSet = CharSet.Auto)] public static extern uint waveOutOpen (ref IntPtr hWaveOut, int uDeviceID, ref WAVEFORMATEX lpFormat, delegateWaveOutProc dwCallback, IntPtr dwInstance, uint dwFlags); 在dwCallback上他是用delegateWaveOutProc宣告 但我不太瞭解delegateWaveOutProc代表的是....? 綜合以上問題 小弟該怎麼去解決呢 希望有前輩能指點一下...感謝!!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.220.51.184

09/05 23:16, , 1F
我記得有一個SoundPlayer可以用…
09/05 23:16, 1F

09/06 14:06, , 2F
自己去MSDN Library找看參數的定義到底是怎樣...
09/06 14:06, 2F

09/10 21:49, , 3F
Soundplayer 可用阿....3.0版本的東西 :)
09/10 21:49, 3F
文章代碼(AID): #1AeXZn_T (C_Sharp)