delphi imagen usb vid&pid

procedure FillFilterGuidList(clid: TGUID; list: TStringList);
{ sub function}
function FormattedKeystring (DisplayName, FriendlyName: string): string;
var
   c: Char;
   i: Integer;
   Temp: string;
   Value: string;
begin
   Value := DisplayName + FriendlyName;
   Temp := '';
   for i := 1 to Length (Value) do begin
      c:= Value[i];
      (*if c in ['\'] then begin
         c := ' ';
      end;*)
      if (c in [' ','-','{','}'])
       or (c in ['a'..'z'])
       or (c in ['A'..'Z'])
       or (c in ['0'..'9']) then begin
         Temp := Temp + c;
      end;
   end;
   Result := Temp;
end;


var
  pSysDevEnum: IIECreateDevEnum;
  pEnumCat: IIEEnumMoniker;
  pMoniker: IIEMoniker;
  cFetched: ULONG;
  pPropBag: IIEPropertyBag;
  bc: IIEBindCtx;
  mo: IIEMoniker;
  er: IIEErrorLog;
  ov: OleVariant;
  sName: POleStr;
  DisplayName:string;
begin
  list.clear;
  pSysDevEnum := nil;  
  CoCreateInstance(CLSID_SystemDeviceEnum, nil, CLSCTX_INPROC, IID_IIECreateDevEnum, pSysDevEnum);
  pEnumCat := nil;
  if pSysDevEnum.CreateClassEnumerator(clid, pEnumCat, 0) = S_OK then
  begin
    pMoniker := nil;
    while pEnumCat.Next(1, pMoniker, @cFetched) = S_OK do
    begin
      bc := nil;
      mo := nil;


      
      if pMoniker.GetDisplayName (nil, nil, sName) = S_OK then begin
        DisplayName := sName;
        CoTaskMemFree (sName);
      end
      else begin
        DisplayName := '';
      end;


      list.Add(FormattedKeystring(DisplayName,''));


//      pMoniker.BindToStorage(bc, mo, IID_IIEPropertyBag, pPropBag);
//      er := nil;
//      pPropBag.Read('CLSID', ov, er);
//      list.Add(string(AnsiString(ov)));
//      pPropBag := nil;
      pMoniker := nil;
    end;
  end;
  pEnumCat := nil;
  pSysDevEnum := nil;
end;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值