在 Delphi 中获取打印机列表可以使用 Windows API 函数 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 等属性进行匹配。