Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Команды принтеру... (http://forum.oszone.net/showthread.php?t=78044)

nec 3540A 22-01-2007 22:55 539946

Команды принтеру...
 
Хотелось узнать, где написано про команды, которые можно послать принтеру (Epson stylus 640) на выполнение? Почитал мануал, тоже нечего подходящего не нащел, вот код моего записыльщика в порт принтера ( DELPHI ):

Код:

Под Win16 Вы можете использовать функцию SpoolFile, или Passthrough escape, если принтер поддерживает последнее.Под Win32 Вы можете использовать WritePrinter.
Ниже пример открытия принтера и записи чистого потока данных в принтер.Учтите, что Вы должны передать корректное имя принтера, такое, как "HP LaserJet5MP",чтобы функция сработала успешно.
Конечно, Вы можете включать в поток данных любые необходимые управляющие коды,которые могут потребоваться.

uses WinSpool;


procedure WriteRawStringToPrinter(PrinterName:String; S:String);
var
  Handle: THandle;
  N: DWORD;
  DocInfo1: TDocInfo1;
begin
  if not OpenPrinter(PChar(PrinterName), Handle, nil) then
  begin
    ShowMessage('error ' + IntToStr(GetLastError));
    Exit;
  end;
  with DocInfo1 do begin
    pDocName := PChar('test doc');
    pOutputFile := nil;
    pDataType := 'RAW';
  end;
  StartDocPrinter(Handle, 1, @DocInfo1);
  StartPagePrinter(Handle);
  WritePrinter(Handle, PChar(S), Length(S), N);

  EndPagePrinter(Handle);
  EndDocPrinter(Handle);
  ClosePrinter(Handle);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  WriteRawStringToPrinter('HP', 'Test This');
end;


ivank 22-01-2007 23:47 539958

nec 3540A
А зачем слать сырые команды, а не воспользоваться какими-нибудь более высокоуровневыми API?

nec 3540A 24-01-2007 19:55 540787

ivank
А поподробнее где можно про них прочитать?

pva 28-01-2007 17:27 542686

В MSDN написано, я там читал. В разделах GDI и Printing


Время: 03:50.

Время: 03:50.
© OSzone.net 2001-