ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 获取电脑上连接的USB打印机

获取电脑上连接的USB打印机

原创 Linux操作系统 作者:niuchao 时间:2019-06-14 15:21:07 0 删除 编辑
原理:通过强大的WMI,用 Win32_PnPEntit 即插即用的管理机制来搜索

function RewiseUSBPrint(): String;
var
  i: integer;
  Locator: OleVariant;
  WMI: OleVariant;
  RET: OleVariant;
  Enum: IEnumVariant;
  Tmp: OleVariant;
  Value: Cardinal;
begin
  try
    Result := '';


    i:=0;
    Locator := CreateOleObject('WbemScripting.SWbemLocator');
    WMI := Locator.ConnectServer('.', '', '', '');
    Ret := WMI.ExecQuery('SELECT * FROM Win32_PnPEntity');
    Enum:= IUnknown(RET._NewEnum) as IEnumVariant;
    while (Enum.Next(1, Tmp, Value) = S_OK) do
    begin
      if Pos('USBPRINT', Tmp.DeviceID) > 0 then     //USBPRINT
      begin
        Result := Result + Tmp.PNPDeviceID+'\';
        Inc(i);
      end;
    end;


    Result := StringReplace(Result, 'USBPRINT\', '', [rfReplaceAll]) + '-->'+IntToStr(i);
  except on e:exception do
    Result := 'RewiseUSBPrint Error??'+e.Message;
  end;
end;


调用结果,本电脑连接了两台打印机:JOLIMARKCJ-222D\8&FEE0C07&0&USB002\UNKNOWNPRINTER\8&3B5B3219&0&USB004\-->2

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/166523/viewspace-1166232/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2004-11-04

  • 博文量
    141
  • 访问量
    136177