读书人

怎么实现不注册 filter却可以播放需

发布时间: 2012-03-29 12:53:12 作者: rapoo

如何实现不注册 filter,却可以播放需要解码器的视频?
象 qq影音,暴风影音,kmplayer 这类的软件,安装之后,windows 自带的播放器还是放不了,说明那些软件的目录下的 .ax 文件没有注册进系统,这是怎么实现的?

[解决办法]
动态加载filter

Delphi(Pascal) code
function lwGetClassObject(hLib : HMODULE; const CLSID,IID : TGUID; var obj) : HRESULT;var lpDllGetClassObject : function(const CLSID, IID: TGUID; var Obj): HResult; stdcall; pcf : IClassFactory;begin  Result := E_FAIL;  if (hLib = 0) then    Exit;  lpDllGetClassObject := GetProcAddress(hLib, 'DllGetClassObject');  Result := lpDllGetClassObject(CLSID, IClassFactory, pcf);  if pcf = nil then   Exit;  Result := pcf.CreateInstance(nil, IID, obj);  if Pointer(obj) = nil then   Result := E_FAIL;  pcf := nil;end;  //use  hr := lwGetClassObject(LoadLibrary('CL264dec.ax'),                        CLISD_CL264Decoder,                        IID_IBaseFilter,                        pCL264Decoder);  //IGraphBuilder.AddFilter(pCL264Decoder, 'CL264 Decoder8'); 

读书人网 >.NET

热点推荐