在DSPACK包的DEMO里面有个D6-D7\videocap.dpr,main.pas中有段源码是这样子的
  CapEnum := TSysDevEnum.Create(CLSID_VideoInputDeviceCategory);
  for i := 0 to CapEnum.CountFilters - 1 do
    VideoCapFilters.Items.Add(CapEnum.Filters[i].FriendlyName);  CapEnum.SelectGUIDCategory(CLSID_AudioInputDeviceCategory);
  for i := 0 to CapEnum.CountFilters - 1 do
    AudioCapFilters.Items.Add(CapEnum.Filters[i].FriendlyName);
这句CapEnum := TSysDevEnum.Create(CLSID_VideoInputDeviceCategory);是枚举视频输入类的,我想应该没错吧。但音频枚举为什么会是这句CapEnum.SelectGUIDCategory(CLSID_AudioInputDeviceCategory);而不是
CapEnum := TSysDevEnum.Create(CLSID_AudioInputDeviceCategory);
  有高手能解答下么? 

解决方案 »

  1.   

    CapEnum 定义为一个TSysDevEnum类的一个实例,实例建立后就没有必要再建立,后面可以直接引用,所以后面枚举音频设备时没必要再用Create,可以直接使用CapEnum.SelectGUIDCategory。按我的理解也可先用:
    CapEnum := TSysDevEnum.Create(CLSID_AudioInputDeviceCategory);背后再用:
    CapEnum.SelectGUIDCategory(CLSID_VideoInputDeviceCategory);