Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Spezielle Druckereigenschaften auslesen (https://www.delphipraxis.net/109869-spezielle-druckereigenschaften-auslesen.html)

DeddyH 9. Mär 2008 11:27


Spezielle Druckereigenschaften auslesen
 
Ich hätte gern gewusst, wie ich spezielle Eigenschaften eines Druckers ermitteln kann. Konkret geht es mir um den Anschluss (ob an FILE oder nicht) sowie PostScript-Fähigkeit. Zu Letzterem habe ich bei den Schweizern diesen Code gefunden, allerdings schließt dieser mir nach Abarbeitung das komplette Programm :gruebel:

Danke für' s Lesen

marabu 9. Mär 2008 11:43

Re: Spezielle Druckereigenschaften auslesen
 
Hallo Deddy,

der Code aus der Schweiz funktioniert bei mir - ohne den von dir beschriebenen Seiteneffekt.

Freundliche Grüße

DeddyH 9. Mär 2008 11:49

Re: Spezielle Druckereigenschaften auslesen
 
Hallo marabu, merkwürdig, ich habe diesen Effekt sowohl unter Delphi 7 als auch unter Delphi 2007. Das Memo wird befüllt und das Programm sofort danach geschlossen.

Die Muhkuh 9. Mär 2008 11:52

Re: Spezielle Druckereigenschaften auslesen
 
Hi Detlef,

ich kann das Problem auch nicht nachvollziehen (TDE). Tritt das Problem auch in einer nackten Anwendung auf?

toms 9. Mär 2008 11:53

Re: Spezielle Druckereigenschaften auslesen
 
Hallo

Probiere mal den Code von Joe C. Hecht:
Delphi-Quellcode:
uses
 Printers;

function IsPostScriptPrinter(dc : hdc) : bool;
var
  TestInt : integer;
  a : array[0..255] of char;
  err : integer;
  s : string;
begin
  Result := false;
  TestInt := GETTECHNOLOGY;
 {$IFDEF WIN32} 
  if ExtEscape(Dc,
               QUERYESCSUPPORT,
               sizeof(TestInt),
               @TestInt,
               0,
               Nil) > 0 then begin
     Err := ExtEscape(Dc,
                      GETTECHNOLOGY,
                      0,
                      nil,
                      256,
                      @a);
 {$ELSE} 
  if Escape(Dc,
            QUERYESCSUPPORT,
            sizeof(TestInt),
            @TestInt,
            Nil) > 0 then begin
     Err := Escape(Dc,
                   GetTechnology,
                   0,
                   nil,
                   @a);
  {$ENDIF} 
     if Err > 0 then begin
       s:= UpperCase(StrPas(a));
       if Pos('POSTSCRIPT',s) > 0  then
         result := true;
     end;
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  if PrintDialog1.Execute then
    if IsPostScriptPrinter(Printer.Handle) then
      ShowMessage('This is a Postscript Printer') else
      ShowMessage('This is not a Postscript Printer');
end;

DeddyH 9. Mär 2008 11:55

Re: Spezielle Druckereigenschaften auslesen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich kann machen, was ich will, immer derselbe Effekt :wall: Ich hänge mal das D7-Kompilat an, vielleicht tritt dieses komische Verhalten ja nur bei mir auf.

DeddyH 9. Mär 2008 11:58

Re: Spezielle Druckereigenschaften auslesen
 
Ah, der Code von Tom funktioniert, herzlichen Dank :thumb:

Die Muhkuh 9. Mär 2008 12:01

Re: Spezielle Druckereigenschaften auslesen
 
Deine Exe funktioniert bei mir einwandfrei. ;)
Liegt also irgendwo doch an Dir. *g*

DeddyH 9. Mär 2008 12:07

Re: Spezielle Druckereigenschaften auslesen
 
Hmm... evtl. verursachen die virtuellen Drucker das Problem. Nun muss ich nur noch herausfinden, wie ich ermitteln kann, ob der aktuelle Drucker an FILE druckt.

TurboMartin 9. Mär 2008 12:46

Re: Spezielle Druckereigenschaften auslesen
 
An virtuellen Druckern kann es nicht liegen. Ich habe hier 4 Virtuelle, und es schließt sich nicht.
Aber such mal in der Hilfe (PSDK) nach PRINTER_INFO_2 bzw. PRINTER_INFO_5 . Damit lässt sich herausfinden, ob es ein Fax ist und ähnliches.. Vielleicht hilft es ja weiter.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:55 Uhr.
Seite 1 von 2  1 2      

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