作者fongfonglin (越夜越美丽)
看板C_Sharp
标题[问题] 使用waveout播放wav
时间Sat Sep 5 15:53:19 2009
小弟之前在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
1F:→ peiga:我记得有一个SoundPlayer可以用… 09/05 23:16
2F:→ EricTsai:自己去MSDN Library找看参数的定义到底是怎样... 09/06 14:06
3F:推 QQ72518:Soundplayer 可用阿....3.0版本的东西 :) 09/10 21:49