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

错误消息是“设备名称已被此应用程序用作别名。使用唯一别名。”

为什么会出现错误?

4

2 回答 2

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/

于 2013-10-29T21:27:00.547 回答
0

当尝试重新打开已打开的 mci 设备时,可能会发生这种情况。

如果最初打开设备或文件时未指定 MCI_OPEN_SHAREABLE 标志,则对设备或文件的所有后续 MCI_OPEN 命令都将失败。

于 2010-02-09T04:28:44.507 回答