dwReturn = mciSendCommand(0, MCI_OPEN, MCI_OPEN_ELEMENT | MCI_OPEN_TYPE
, (DWORD_PTR)(LPVOID) &mciOpenParms);
error -message is“此应用程序已将设备名称用作别名。使用唯一的别名。”
为什么会出错?
答案 0 :(得分:1)
虽然技术上正确,但这个答案对我没什么帮助。
“如果最初打开设备或文件时未指定MCI_OPEN_SHAREABLE标志,则设备或文件的所有后续MCI_OPEN命令都将失败。”
我发现在任何MCI_OPEN之前我必须做一个MCI_CLOSE,如下所示:
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
}
此外,这是一篇关于编程这些音频设备的非常好的文章。
http://www.c-sharpcorner.com/uploadfile/GemingLeader/creating-a-sound-recorder-in-c-and-C-Sharp/
答案 1 :(得分:0)
当尝试重新打开已打开的mci设备时,可能会发生这种情况。
如果最初打开设备或文件时未指定MCI_OPEN_SHAREABLE标志,则设备或文件的所有后续MCI_OPEN命令都将失败。