相关文章推荐
从未表白的围巾  ·  internet explorer - ...·  1 年前    · 
痴情的帽子  ·  Spring ...·  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 等属性进行匹配。

  •