this slowpoke moves

Print PRN File Data

uses Printers, Winspool

//

function PRN(const FileName, PrinterName: string): Integer;
var
  Buffer: record
    JobInfo: record
      Path: PChar;
      JobID: DWORD;
    end;
    PathBuffer: array[0..255] of Char;
  end;

  SizeNeeded: DWORD;
  Handle: THandle;
  PrtName: string;
  ok: Boolean;
begin
  // Flush job to printer
  PrtName := PrinterName;

  // Default printer name
  if PrtName = '' then
    PrtName := Printer.Printers[Printer.PrinterIndex];

  ok := False;
  if OpenPrinter(PChar(PrtName), Handle, nil) then

    if AddJob(Handle, 1, @Buffer, SizeOf(Buffer), SizeNeeded) then

      if CopyFile(PChar(FileName), Buffer.JobInfo.Path, True) then

        if ScheduleJob(Handle, Buffer.JobInfo.JobID) then
          ok := True;

  if not ok then Result := GetLastError
  else
    Result := 0;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if PRN('c:\test.prn', Printer.Printers[0]) = 0 then
    ShowMessage('No error...');
end;

Keine Kommentare:

Kommentar veröffentlichen

Beliebte Posts

Translate