首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从mciSendString返回奇怪的错误-有人可以帮助吗?

从mciSendString返回奇怪的错误-有人可以帮助吗?
EN

Stack Overflow用户
提问于 2009-03-13 13:25:34
回答 2查看 1.8K关注 0票数 0

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

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

代码语言:javascript
复制
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);

它似乎工作得很好。要停止记录,请执行以下代码。

代码语言:javascript
复制
mcierr=mciSendString("stop mysound",tmpstr,80,NULL);
mcierr=mciSendString("save mysound C:\\filename.wav",tmpstr,80,NULL);   
mcierr=mciSendString("close mysound",tmpstr,80,NULL);

当发送“保存mysound C:\filename.wav”指令时,出现以下错误。返回的错误为..

代码语言:javascript
复制
MCI Error A parameter or value was specified twice.  Only specify it once.

但是我在我发送的内容中看不到任何错误,并且这个错误没有任何意义。有没有可能这个错误是因为程序试图使用PC不支持的格式进行录制?

耽误您时间,实在对不起

伊恩

EN

回答 2

Stack Overflow用户

发布于 2009-04-17 07:46:33

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

代码语言:javascript
复制
mcierr=mciSendString("save mysound C:\\filename.wav",tmpstr,80,NULL); 

在我的运行XP的开发PC上运行得很好,但在一些运行XP的测试PC和所有运行Vista的测试PC上都会出现错误。但是,如果文件名本身放在引号中,错误就会消失,如下所示。

代码语言:javascript
复制
mcierr=mciSendString("save mysound "C:\\filename.wav"",tmpstr,80,NULL);

现在,该代码可以在所有经过测试的XP和Vista PC上正常运行。

伊恩

票数 0
EN

Stack Overflow用户

发布于 2013-01-03 03:30:31

为了让它工作,需要更多的细节。请注意文件名前后的双""

代码语言:javascript
复制
mcierr=mciSendString("save mysound ""C:\\filename.wav""",tmpstr,80,NULL);

这也很好:

代码语言:javascript
复制
mcierr=mciSendString(@"save mysound ""C:\filename.wav""",tmpstr,80,NULL);

有了这些双引号,代码现在可以在我的Windows7上运行了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/642691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档