0

数か月前、作業中の MFC アプリにオーディオ録音を追加しました。これは非常に簡単であることが判明し、1、2 時間後にはコードが私の PC と 2 台の顧客のテスト マシン (1 つは XP を実行し、もう 1 つは Vista を実行) で動作するようになりました。しかし最近、テスト マシンの 1 つがアップグレードされ、今では記録機能が動作しません。

記録を開始するための基本的なコードは..

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 がサポートしていないフォーマットを使用して記録しようとしているためにエラーが発生した可能性はありますか?

御時間ありがとうございます

イアン

4

2 に答える 2

0

OK私はこれに対する解決策を見つけることができました。コードのこの行..

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 で正常に動作します。

イアン

于 2009-04-17T07:46:33.070 に答える
0

それを機能させるには、さらに詳細が必要です。""ファイル名の前後の二重に注意してください。

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

これも問題ありません。

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

これらの二重引用符を使用すると、コードは Windows 7 で動作するようになりました。

于 2013-01-02T19:30:30.980 に答える