4

这就是我所做的:

DWORD dwReturn;
MCI_OPEN_PARMS mciOpenParms;
mciOpenParms.lpstrDeviceType = _T("MPEGvideo");
mciOpenParms.lpstrElementName = m_tmpFileName;

dwReturn = mciSendCommand(NULL, MCI_OPEN,
                  MCI_OPEN_TYPE | MCI_OPEN_ELEMENT,
                 (DWORD)(LPVOID) &mciOpenParms);
    if (dwReturn)
    {
        wchar_t chError[100];
        mciGetErrorString(dwReturn,chError,sizeof(chError));
        //report the error here
    }

运行代码时,我看到 dwReturn 为 266,并且 chError 设置为“加载指定设备驱动程序时出现未知问题”。有什么问题?

注意:我也试过“mpegvideo”而不是“MPEGvideo”;它没有帮助。无论如何,这些东西记录在哪里?

4

2 回答 2

1

这个对我有用。也许(很可能)你把 MCI 寄存器搞砸了。或者您正在打开的文件可能以某种方式损坏。

据我所知,这些设备名称没有记录在任何地方。但是您可以在注册表中找到系统中配置的那些:HKLM\Software\Microsoft\Windows NT\CurrentVersion\MCI32。我的系统有:

  • AVI视频
  • CD音频
  • MPEG视频
  • 定序器
  • 波音频

鉴于现在 MCI 的使用并不多,我会说它们非常标准。

于 2011-08-22T08:53:25.690 回答
1

如果您指定 MCI_OPEN_ELEMENT,则 mciOpenParms.lpstrDeviceType 必须为空。

请参阅备注部分

*要使用自动类型选择(通过注册表中的条目),请将文件名和文件扩展名分配给由 lpOpen 标识的结构的 lpstrElementName 成员,将 lpstrDeviceType 成员设置为 NULL,并设置 MCI_OPEN_ELEMENT 标志。*

于 2011-08-25T19:33:31.500 回答