2009-03-13 6 views
0

Il y a quelques mois, j'ai ajouté l'enregistrement audio à une application MFC sur laquelle je travaille. Cela s'est avéré assez facile et après une heure ou deux, le code fonctionnait sur mon PC et sur quelques machines de test de clients (l'une fonctionnant sous XP, l'autre sous Vista). Récemment cependant, une de leurs machines de test a été mise à jour et maintenant la fonction d'enregistrement refuse de fonctionner.Erreur étrange renvoyée par mciSendString - Quelqu'un peut-il m'aider?

Le code de base pour commencer l'enregistrement est ..

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); 

qui semble bien fonctionner. Pour arrêter l'enregistrement le code suivant est exécuté ..

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

L'erreur suivante se produit lorsque la fonction « enregistrer MySound C: \ filename.wav » instruction est envoyée. L'erreur renvoyée est ..

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

Mais je ne vois aucune erreur dans ce que j'envoie et cette erreur n'a pas de sens. Est-il possible que l'erreur soit due au fait que le programme essaye d'enregistrer en utilisant un format que le PC ne supporte pas?

Merci pour votre temps

Ian

+0

M'a donné un indice sur un problème que j'avais. Merci! –

Répondre

0

OK, je réussi à trouver une solution à cela. Cette ligne dans le code ..

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

fonctionne très bien sur mon PC exécutant de développement XP, mais provoque des erreurs sur certains XP PC de test en cours d'exécution et sur tous les Vista en cours d'exécution. L'erreur disparaît si le nom lui-même est mis entre guillemets comme ça ..

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

Maintenant, le code fonctionne bien sur tous les XP et Vista PC, il a été testé sur.

Ian

0

Un détail supplémentaire est nécessaire pour que cela fonctionne. S'il vous plaît regarder la double "" avant et après le nom du fichier:

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

Ceci est bien aussi:

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

Avec ces guillemets doubles le code fonctionne sur mon Windows 7 maintenant.

Questions connexes