Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Probleme mit Printer.Getprinter (https://www.delphipraxis.net/153484-probleme-mit-printer-getprinter.html)

knulli 4. Aug 2010 21:46

Probleme mit Printer.Getprinter
 
Hallo zusammen.

habe ein Problem mit der Funktion Printer.Getprinter - es geht darum, die DEVMODE Structure eines Druckers auslesen. Der Code hierzu ist:
Delphi-Quellcode:
Procedure ReadPrinterMode;
type
    TPrinter_Mode = record
                        Pdm  : Devmode;
                        Extra : array[1..20000] of byte;
                      end;

 var
      tmpPrinterMode : TPrinterMode;
      hDevMode : THandle;
      PDevMode : PDeviceMode;
      i : integer;
      Device, Driver, Port: array[0..1023] of char;
  begin
     Result:=false;
      Printer.GetPrinter(Device,Driver,Port,hDevMode);
      if hDevMode<>0 then
       begin
          PDevMode:=GlobalLock(hDevMode);
          if pDevMode<>nil then
            begin
               move(pDevMode^,tmpPrinterMode,pDevMode^.dmSize+pDevMode^.dmDriverExtra);
               GlobalUnlock(hDevMode);
               Result:=true;
             end;
       end;
Soweit funktioniert das ganze - wird jetzt aber der Drucker mit Printer.PrinterIndex gewechselt, wird bei erneutem Aufruf der Funktion die Devmode Struktur nicht aktualisiert. Hier ist weiterhin der Standarddrucker enthalten. Device hingegen enthält den korrketen Drucker.

Hat jemand eine Idee? Oder vielleicht eine alternative Idee, um die Daten auszulesen?

Ich hoffe, ich habe die richtige Kategorie erwischt.

DelphiBandit 5. Aug 2010 12:02

AW: Probleme mit Printer.Getprinter
 
Moinsen,

ggf. könnte dies die Ursache dafür sein. Sind nur kleine Änderungen und das Einbinden der gepatchten printers.pas in Deine Anwendung statt der Originalen dafür notwendig. Einfach mal ausprobieren :)

knulli 5. Aug 2010 14:29

AW: Probleme mit Printer.Getprinter
 
Hallo DelphiBandit,

danke für die Info - werde ich gleich mal testen.

Dies könnte erklären, warum der devmode korrekt ist, wenn zwischen den Abfragen der TPrintDialog ausgeführt wird.

Melde mich nochmal.

knulli 6. Aug 2010 09:36

AW: Probleme mit Printer.Getprinter
 
Hallo DelphiBandit,

das wars !! Da sucht man tagelang im eigenen Mist und dann sowas :wall:.

Naja, dafür läuft es jetzt.

Auf jeden Fall vielen Dank für Deine Unterstützung :-D.

DelphiBandit 6. Aug 2010 09:49

AW: Probleme mit Printer.Getprinter
 
Gerne doch - waren bei mir bei D5 seinerzeit auch tagelang :D

Ich glaube auf dieses Problem fallen viele herein, die direkt über TPrinter mit den Druckern reden wollen :(
Vielleicht sollte man es mal in die FAQ mit aufnehmen :) Die Frage ist nur, welche Stichworte man dort reinpacken will, damit es auch gefunden wird.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:54 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz