从mciSendString返回奇怪的错误 - 任何人都可以帮忙吗?

时间:2009-03-13 13:25:34

标签: audio mcisendstring

几个月前,我将录音添加到我正在处理的MFC应用程序中。事实证明这很简单,一两个小时之后,代码就在我的电脑和一些客户测试机器上运行(一个运行XP另一个Vista)。然而,最近他们的一台测试机器升级了,现在录音功能拒绝工作。

开始录制的基本代码是..

mcierr=mciSendString("open new type waveaudio alias mysound",tmpstr,80,NULL);
mcierr=mciSendString("set mysound time format ms bitspersample 8 samplespersec 11025",tmpstr,80,NULL);
mcierr=mciSendString("record mysound",tmpstr,80,NULL);

似乎工作正常。要停止录制,执行以下代码..

mcierr=mciSendString("stop mysound",tmpstr,80,NULL);
mcierr=mciSendString("save mysound C:\\filename.wav",tmpstr,80,NULL);   
mcierr=mciSendString("close mysound",tmpstr,80,NULL);

发送“save mysound C:\ filename.wav”指令时发生以下错误。返回的错误是..

MCI Error A parameter or value was specified twice.  Only specify it once.

但我发现我发送的内容没有任何错误,而且该错误没有意义。该错误是否可能是因为程序试图使用PC不支持的格式进行记录?

感谢您的时间

伊恩

2 个答案:

答案 0 :(得分:0)

好的,我设法找到了解决方法。代码中的这一行..

mcierr=mciSendString("save mysound C:\\filename.wav",tmpstr,80,NULL); 

在运行XP的开发PC上工作正常,但在运行XP的所有测试PC和运行Vista的所有测试PC上都会出错。但是,如果文件名本身放在这样的引号内,则错误就消失了。

mcierr=mciSendString("save mysound "C:\\filename.wav"",tmpstr,80,NULL);

现在代码在所有已经过测试的XP和Vista PC上运行良好。

伊恩

答案 1 :(得分:0)

要使其工作,需要更多详细信息。 请在文件名之前和之后观看双""

mcierr=mciSendString("save mysound ""C:\\filename.wav""",tmpstr,80,NULL);

这也很好:

mcierr=mciSendString(@"save mysound ""C:\filename.wav""",tmpstr,80,NULL);

使用这些双引号,代码现在可以在我的Windows 7上运行。