Pergunta

dwReturn = mciSendCommand(0, MCI_OPEN, MCI_OPEN_ELEMENT | MCI_OPEN_TYPE
                         , (DWORD_PTR)(LPVOID) &mciOpenParms);

erro -mensagem é "O nome do dispositivo já está sendo usado como um alias por esta aplicação. Use um alias exclusivo."

Por que é dando um erro?

Foi útil?

Solução 2

Isso pode acontecer quando se tenta reabrir um dispositivo MCI já aberto.

Se o sinalizador MCI_OPEN_SHAREABLE não for especificado quando um dispositivo ou arquivo é aberto inicialmente, todos MCI_OPEN posterior comandos para o dispositivo ou arquivo irá falhar.

Outras dicas

Embora tecnicamente correta, esta resposta não me ajudou muito.

"Se a bandeira MCI_OPEN_SHAREABLE não for especificado quando um dispositivo ou arquivo é aberto inicialmente, todos MCI_OPEN posterior comandos para o dispositivo ou arquivo irá falhar."

eu descobri que eu tinha que fazer uma MCI_CLOSE antes de qualquer MCI_OPEN, como este:

MciClose(void)
{
 int Result;
 MCI_GENERIC_PARMS mciGenericParams;
 DWORD dwFlags;

 mciGenericParams.dwCallback = (long)TestSoundForm->Handle;

 dwFlags = MCI_NOTIFY | MCI_WAIT;
 Result = mciSendCommand(MciDeviceID, MCI_CLOSE, dwFlags, (long)&mciGenericParams);

 // MCIERR_INVALID_DEVICE_ID occurs if the device is already closed.
 if(Result == 0 || Result == MCIERR_INVALID_DEVICE_ID)return;
 else MciError(Result, "MCI_CLOSE  Error"); // display the error
}

Além disso, aqui é um artigo muito bom sobre a programação estes dispositivos de áudio.

http : //www.c-sharpcorner.com/uploadfile/GemingLeader/creating-a-sound-recorder-in-c-and-C-Sharp/

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top