首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么MCI_OPEN会失败并返回无效的设备id?

为什么MCI_OPEN会失败并返回无效的设备id?
EN

Stack Overflow用户
提问于 2010-02-04 23:15:09
回答 2查看 2.1K关注 0票数 0
代码语言:javascript
复制
dwReturn = mciSendCommand(0, MCI_OPEN, MCI_OPEN_ELEMENT | MCI_OPEN_TYPE
                         , (DWORD_PTR)(LPVOID) &mciOpenParms);

error -message为“设备名称已被此应用程序用作别名。请使用唯一的别名。”

为什么它会给出错误?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-02-09 12:28:45

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

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

票数 0
EN

Stack Overflow用户

发布于 2013-10-30 05:27:01

虽然从技术上讲是正确的,但这个答案对我帮助不大。

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

我发现我必须在任何MCI_OPEN之前做一个MCI_CLOSE,如下所示:

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2200740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档