#include "stdio.h"#include "conio.h"#include "stdlib.h" //for function wcstombs()#include "windows.h"#include "vfw.h"#pragma comment(lib,"vfw32.lib") //此行可省去int EnumCodecs(char *strName,int *fccHandler){ static int i; int ret=1; HIC hic; ICINFO icinfo; if(!ICInfo(ICTYPE_VIDEO, i, &icinfo)) { i=0; return 0; } hic = ICOpen(icinfo.fccType, icinfo.fccHandler, ICMODE_QUERY); if (hic) { ICGetInfo(hic, &icinfo, sizeof(icinfo)); //由于得到的szDescription是UNICODE双字节字串,所以要转换为ASCII的 wcstombs(strName,icinfo.szDescription,256); *fccHandler=icinfo.fccHandler; } else ret=-1; ICClose(hic); i++; return ret;}main(){ int i,n; int fccHandler; char strName[256]; int ret; for(;;) { ret=EnumCodecs(strName,&fccHandler); if(ret==1) printf("0x%x,%s/n",fccHandler,strName); else if(ret==0) break; } getch();} 上面是枚举OS装入那些编解器,只对VFW的那种有效,对filter无效。解码器可以卸载。对于VFW的那种,在WIN98下它是有system.ini的[drivers32]加入一行,如VIDC.MP42=mpg4c32.dll。对于WIN2K是在注册表加入的。对于filter是用注册,用regsvr32.exe