Mega Code Archive

 
Categories / Delphi / Printing
 

How to Check if a printer supports postscript

Title: How to Check if a printer supports postscript uses WinSpool, Printers; {: Check if the currently selected printer supports postscript. Only applicable on Win2K/XP! } function PrinterSupportsPostscript: Boolean; const POSTSCRIPT_PASSTHROUGH = 4115; POSTSCRIPT_IDENTIFY = 4117; Escapes: array[0..2] of Cardinal = (POSTSCRIPT_DATA, POSTSCRIPT_IDENTIFY, POSTSCRIPT_PASSTHROUGH); var res: Integer; i: Integer; begin Result := false; for i := Low(Escapes) to High(Escapes) do begin res := ExtEscape(printer.Handle, QUERYESCSUPPORT, sizeof(Escapes[0]), @Escapes[i], 0, nil); if res 0 then begin Result := true; Break; end; end; end; procedure TForm1.Button1Click(Sender: TObject); const boolstr: array[Boolean] of string = (' not', ''); var i: Integer; S: string; begin for i := 0 to Printer.Printers.Count - 1 do begin Printer.PrinterIndex := i; memo1.Lines.add( Format('Printer %s does%s support Postscript', [printer.printers[printer.printerindex], boolstr[PrinterSupportsPostscript]])); end; end;