[Back to DELPHI SWAG index] [Back to Main SWAG index] [Original]

    A two months ago Gareet Wilson answer this question and I tested that work
    fine...

    The best way I have found is to do the following, which uses the Windows
    printing routines, but sends data directly to the printer (you may have
    to changes things around, but this is a good outline}. I figured out a
    lot of this from "Three Printing Techniques for Windows 95 Console
    Applications," by David Tamashiro in the C/C++ User's Journal, January
    1997.

    **First, include the following:

    var
      PrinterHandle:THandle;  {the handle to the printer}

    uses WinSpool, Printers;

    type TDocInfo1=packed record {the replacement for DOC_INFO_1}
      lpszDocName: PAnsiChar;
      lpszOutputFile: PAnsiChar;
      lpszDatatype: PAnsiChar;
    end;

    **Then, open a printer according to its name:

    var
      CTitle:array[0..31] of Char;
      CMode:array[0..4] of Char;
      DocInfo:TDocInfo1;
    begin
      StrPLopy(CTitle, 'My Title'); {setup our title buffer}
      StrPCopy(CMode, 'RAW'); {put "RAW" in our mode buffer}
      FillChar(DocInfo, SizeOf(DocInfo), 0);  {fill the DocInfo structure
    with zero's}
      with DocInfo do
      begin
        lpszDocName:=CTitle;  {set the title of our document}
        lpszOutputFile:=nil;  {specify no output file}
        lpszDatatype:=CMode;  {set the mode, which we have specified as
    "RAW"}
      end;
      OpenPrinter('Printer Name Here', PrinterHandle, nil);
      StartDocPrinter(PrinterHandle, 1, @DocInfo);
      StartPagePrinter(PrinterHandle);

    **Now, print your text:

    var
      Count:DWord; {the number of bytes written}
    begin
      WritePrinter(PrinterHandle, PChar(printText), Length(printText),
    Count);

    **When you are finished printing, tidy things up:

      EndPagePrinter(PrinterHandle);  {end the page}
      EndDocPrinter(PrinterHandle); {end the document}
      if PrinterHandle<>0 then  {if we have a printer handle}
      begin
        ClosePrinter(PrinterHandle);  {close the printer}
        PrinterHandle:=0; {show that we have closed the printer}
      end;

    I think that about covers it. Hope this helps.

[Back to DELPHI SWAG index] [Back to Main SWAG index] [Original]