当文件的路径+文件名很长时,我注意到
PlaySound(fName.c_str(), NULL, SND_ASYNC);
工作,但不是
mciSendString((L"open \"" + fName + L"\" type waveaudio alias sample").c_str(), NULL, 0, NULL);
mciSendString(L"play sample", NULL, 0, NULL);
失败命令示例:
打开“C:\qisdjqldlkjsqdjqdqjslkdjqlksjlkdjqsldjlqjsdjqdksq\dajdjqjdlqjdlkjazejoizajoijoifjoifjdsfjsfszjfoijdsjfoijdsoifoidsjfojdsofjdsoijfoisjfoijoisdjfosjfqsd\Windows Critical Stop.wav”类型波形音频别名示例
但:
我真的需要 mciSendString 而不是 PlaySound(),因为 PlaySound() 不播放某些文件(48 khz 音频文件,有时是 24 位文件等)
我需要能够播放路径可能很长的音频文件,因为我的应用程序的最终用户可能有这样的文件
如何使 mciSendString 接受长文件名?
笔记:
我也尝试过使用mciSendCommand这个 MSDN 示例,但它是一样的。
最大路径+文件名长度为 127(127:工作,128+:不工作)
如果真的不可能使
mci*
函数使用长于 127 字符的文件名,那么我可以使用什么来代替,只使用 winapi(没有外部库)?(PlaySound
不是一个选项,因为不能与所有 wav 文件一起工作,例如 48 khz:不工作等)