Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Как отправить задание на принтер


Автор: emmanuil 10.1.2007, 05:57
Подскажите ребята smile
Мне нужно отправить задание на принтер (перед этим очистить все задания), затем выполнить его и если оно выполнилось, то присвоить True какой-нибудь переменной. После выполнения одного задания очистить все задания и снова по кругу.
Дело в том, что мне нужно отследить отпечатался ли файл или нет. Очень прошу с кодом! Подскажите пожалуйста! Заранее спасибо!
Я использовал вот такой код, но он не пашет, может я что-то напутал:


Код

uses
  Printers, WinSpool;

function SpoolFile(const FileName, PrinterName: String): Integer;
var
  TBuffer: record
    JobInfo: record // ADDJOB_INFO_1
      Path: PAnsiChar;
      JobID: DWORD;
    end;
    PathBuffer: array[0..255] of Char;
  end;
  SizeNeeded: Cardinal;
  AHandle: THandle;
  PrtName: String;
  Ok: Boolean;
begin
  // Отправка задания на принтер
  PrtName := PrinterName;
  if PrtName = '' then
    PrtName := Printer.Printers[Printer.PrinterIndex]; // Имя принтера по умолчанию
  Ok := False;

  if OpenPrinter(PChar(PrtName), AHandle, nil) then
    if AddJob(AHandle, 1, @Buffer, SizeOf(Buffer), SizeNeeded) then
      if CopyFile(PChar(FileName), Buffer.JobInfo.Path, True) then
        if ScheduleJob(AHandle, Buffer.JobInfo.JobID) then
          Ok := True;

  if not Ok then
  begin
    Result := GetLastError;
  end
  else
    Result := 0;
end;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)