2022年1月19日 星期三

在Delphi中打印各种已知类型的文件

  uses shellapi, printers;
 
  procedure PrintDocument(const documentToPrint : string) ;
  var
    printCommand : string;
    printerInfo : string;
    Device, Driver, Port: array[0..255] of Char;
    hDeviceMode: THandle;
  begin
    if Printer.PrinterIndex = cboPrinter.ItemIndex then
    begin
      printCommand := 'print';
      printerInfo := '';
    end
    else
    begin
      printCommand := 'printto';
      Printer.PrinterIndex := cboPrinter.ItemIndex;
      Printer.GetPrinter(Device, Driver, Port, hDeviceMode) ;
      printerInfo := Format('"%s" "%s" "%s"', [Device, Driver, Port]) ;
    end;
 
    ShellExecute(Application.Handle, 
      PChar(printCommand), 
      PChar(documentToPrint), 
      PChar(printerInfo), 
      nil, 
      SW_HIDE) ;
  end;