@Natcree
Der Record ist falsch deklariert.
Natürlich funktioniert das nur, wenn ein Druckertreiber für diesen Drucker vorhanden ist und dieser auch PassThrough unterstützt.
In deinem Beispiel muss der Drucker auch noch als Standard ausgewählt sein.
Delphi-Quellcode:
type
TPassThroughData = record
nLen : Word;
Data : array[0..255] of Byte;
end;
function PrinterSupport(APrinter: TPrinter; ACommand: Integer): Boolean;
begin
Result := (Escape(APrinter.Canvas.Handle, QUERYESCSUPPORT, SizeOf(ACommand), @ACommand, nil) > 0);
end;
function DirectPrint(APrinter: TPrinter; const s: AnsiString): Boolean;
var
PTBlock : TPassThroughData;
begin
Result := (Length(s) < 256);
if Result then
begin
PTBlock.nLen := Length(s);
StrPCopy(@PTBlock.Data, s);
Escape(APrinter.Handle, PASSTHROUGH, 0, @PTBlock, nil);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Printer.BeginDoc;
try
if PrinterSupport(Printer, PASSTHROUGH) then
DirectPrint(Printer, {...hier Zeichenkette für den Drucker übergeben...});
finally
Printer.EndDoc;
end;
end;