Einzelnen Beitrag anzeigen

Jelen

Registriert seit: 5. Nov 2003
45 Beiträge
 
#10

Re: Netzwerkdrucker spuckt nur leere Seiten aus

  Alt 24. Jan 2009, 08:25
Das Problem steckt vermutlich in den Schreibzugriffen auf Printer.PrinterIndex, die im besten Fall eine Auswahl des Standarddruckers auslösen, aber Zugriffe auf andere Drucker der Statussteuerung in TPrinter überlassen, die dann zwar einen Gerätekontext herstellt, aber keinen WIN API OpenPrinter Aufruf erzeugt (Zitat aus unit Printers):
Delphi-Quellcode:
procedure TPrinter.SetPrinterIndex(Value: Integer);
begin
  CheckPrinting(False);
  if (Value = -1) or (PrinterIndex = -1) then SetToDefaultPrinter
  else if (Value < 0) or (Value >= Printers.Count) then RaiseError(SPrinterIndexError);
  FPrinterIndex := Value;
  FreeFonts;
  SetState(psNoHandle);
end;
Ich hab' nun in meiner Anwendung alle Schreibzugriffe auf Printer.PrinterIndex durch Printer.Setprinter ersetzt:
  Printer.SetPrinter(PChar(Druckername),PChar('WINSPOOL'),PChar(''),0); wobei die Variable Druckername mit einem Eintrag aus Printer.Printers besetzt wird.
Jetzt druckt auch der vorher so faule Netzwerkdrucker!
Danke an alle, die mitgeholfen haben!
  Mit Zitat antworten Zitat