列举Windows CE系统中注册的Filter

 =============================================================
标题:列举Windows CE系统中注册的Filter
摘要:
备注:Windows CE + VC2005
日期:2010.8.9
姓名:朱铭雷
=============================================================
    在用Platform Biulder 5.0定制的Windows CE 5.0系统中,能够支持多种媒体文件,这是因为定制系统的时候,加入了相关编解码组件。
    下面来引用一段代码,枚举出Windows CE系统中注册的组件,其中有几个地方需要注意。
    代码清单如下:
void CFilterTest1Dlg::OnBnClickedButton1()
{
HRESULT hr=0;
    IFilterMapper *pMapper=NULL;
    IEnumRegFilters *pEnum=NULL;
    REGFILTER *pRegFilter=NULL;
    ULONG cFetched=0;
    CoInitialize(NULL);
    hr=CoCreateInstance(CLSID_FilterMapper,NULL,CLSCTX_INPROC,IID_IFilterMapper,(void **)&pMapper);
    if(FAILED(hr))
    {
       TRACE(L"得到IFilterMapper接口失败/n");
       return;
    }
    hr=pMapper->EnumMatchingFilters(
       &pEnum,
       0,
       FALSE,
       GUID_NULL,
       GUID_NULL,
       FALSE,
       FALSE,
       GUID_NULL,
       GUID_NULL
       );
    if(FAILED(hr))
    {
       TRACE(L"得到IEnumRegFilters接口失败/n");
       return;
    }

    while(pEnum->Next(1,&pRegFilter,&cFetched)==S_OK)
    {
       for(int i=0;i<cFetched;i++)
       {
           TRACE(L"%S/n",(pRegFilter+i)->Name);
       }
       CoTaskMemFree(pRegFilter);
    }
    pMapper->Release();
    pEnum->Release();
    CoUninitialize();
}
    然后添加一下#include <dshow.h>头文件。
    编译可能会出现如下错误:
    /ctlutil.h(278) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    解决方法:
    project->properties->configuration->C/C++ ->Command Line,增加/wd4430选项
    继续编译又可能会出现如下错误:
    error LNK2001: 无法解析的外部符号 CLSID_FilterMapper
    error LNK2001: 无法解析的外部符号 IID_IfilterMapper
    fatal error LNK1120: 2 个无法解析的外部命令

    这是因为没有连接必要的静态库。
    解决方法:
    链接器 | 输入 | 附加依赖项,填入strmiids.lib commdlg.lib。
    再次编译,没有错误了。连接设备,测试一下程序。
    打开“输出”窗口,看一下输出信息,如下:
    我的系统中注册了如下Filter:
    WMAudio Decoder DMO
    WMVideo & MPEG4 Decoder DMO
    MPEG-1 Layer 3 Decoder DMO
    Video Renderer
    Audio Renderer
    Internal Script Command Renderer
    WMSpeech Decoder DMO
    NSC file Parser
    ASF embedded stuff Handler
    ASF URL Handler
    ASF ICM Handler
    ASF ACM Handler
    ACM Wrapper
    MPEG-I Stream Splitter
    Windows Media source filter
    Wave Parser
    File-Rendering ‘Transform’
    Multi-File Reader
    M3U/ASXvl Playlist
    ASXv3 Playlist
    ASXv2 Playlist
    File Source(URL)
    File Source(Async.)

    这些Filter直接影响系统能够播放哪些媒体文件。

你可能感兴趣的:(列举Windows CE系统中注册的Filter)