Странная ошибка, возвращаемая из 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.
Но я не вижу никакой ошибки в том, что я посылаю, и эта ошибка не имеет смысла. Возможно ли, что ошибка связана с тем, что программа пытается выполнить запись в формате, который ПК не поддерживает?
Спасибо за ваше время
Ян
2 ответа
ОК, мне удалось найти решение этой проблемы. Эта строка в коде..
mcierr=mciSendString("save mysound C:\\filename.wav",tmpstr,80,NULL);
отлично работает на моем ПК под управлением XP, но вызывает ошибки на некоторых тестовых ПК под управлением XP и на всех из них под управлением Vista. Однако ошибка исчезнет, если само имя файла будет заключено в кавычки, подобные этой.
mcierr=mciSendString("save mysound "C:\\filename.wav"",tmpstr,80,NULL);
Теперь код отлично работает на всех компьютерах с XP и Vista, на которых он был протестирован.
Ян
Чтобы это работало, нужно больше деталей. Пожалуйста, смотрите двойной ""
до и после имени файла:
mcierr=mciSendString("save mysound ""C:\\filename.wav""",tmpstr,80,NULL);
Это тоже хорошо:
mcierr=mciSendString(@"save mysound ""C:\filename.wav""",tmpstr,80,NULL);
С этими двойными кавычками теперь код работает на моей Windows 7.