Contributor: JAVIER CELUCE
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 PrinterHandle0 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.


AltStyle によって変換されたページ (->オリジナル) /