添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
威武的火龙果  ·  USB to RS-232 Adapter ...·  11 月前    · 
飘逸的作业本  ·  春_百度百科·  12 月前    · 
气势凌人的麦片  ·  上海国际时尚中心·  1 年前    · 
闯红灯的煎鸡蛋  ·  Why should you use ...·  1 年前    · 

printer getprinter delphi

在 Delphi 中获取打印机列表可以使用 Windows API 函数 EnumPrinters 来实现。具体步骤如下:

  • 声明一个 TPrinterInfo 类型的结构体,用来保存打印机信息:
  • TPrinterInfo = record Name: string ; Description: string ; PortName: string ; DriverName: string ; end ;
  • 声明一个 TPrinterInfoArray 类型的数组,用来保存所有打印机的信息:
  • TPrinterInfoArray = array of TPrinterInfo ;
  • 声明 EnumPrinters 回调函数,用来获取打印机信息:
  • function EnumPrintersProc(pName: PChar; var pInfo: PRINTER_INFO_2; cbInfo: Integer; var pAdd: TPrinterInfoArray): BOOL; stdcall;
      PrinterInfo: TPrinterInfo;
    begin
      PrinterInfo.Name := pInfo^.pPrinterName;
      PrinterInfo.Description := pInfo^.pComment;
      PrinterInfo.PortName := pInfo^.pPortName;
      PrinterInfo.DriverName := pInfo^.pDriverName;
      SetLength(pAdd, Length(pAdd) + 1);
      pAdd[Length(pAdd) - 1] := PrinterInfo;
      Result := True;
    
  • 调用 EnumPrinters 函数获取所有打印机信息,并保存到 TPrinterInfoArray 数组中:
  • function GetPrinterList: TPrinterInfoArray;
      cbNeeded, cReturned: DWORD;
      pInfo: PRINTER_INFO_2;
    begin
      Result := nil;
      if not EnumPrinters(PRINTER_ENUM_LOCAL, nil, 2, nil, 0, cbNeeded, cReturned) and
        (GetLastError = ERROR_INSUFFICIENT_BUFFER) then
      begin
        SetLength(Result, cbNeeded);
        if EnumPrinters(PRINTER_ENUM_LOCAL, nil, 2, @Result[0], cbNeeded, cbNeeded, cReturned) then
          SetLength(Result, cReturned)
          Result := nil;
      end;
    end;
    

    调用 GetPrinterList 函数即可获取当前系统中所有打印机的信息,以 TPrinterInfoArray 数组的形式返回。您可以在返回的数组中查找您需要的打印机信息,例如通过 Name 或 Description 等属性进行匹配。

  •