AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Duplexdruck bei KONICA MINOLTA Treibern

Duplexdruck bei KONICA MINOLTA Treibern

Ein Thema von WiPhi · begonnen am 23. Feb 2018 · letzter Beitrag vom 26. Feb 2018
Antwort Antwort
Seite 1 von 2  1 2   
WiPhi

Registriert seit: 19. Feb 2015
90 Beiträge
 
Delphi 11 Alexandria
 
#1

Duplexdruck bei KONICA MINOLTA Treibern

  Alt 23. Feb 2018, 12:43
Hallo liebe Community,

diesmal stehe ich vor einem sehr komischen Problem.
Ich lese in einem Programm den Druckertreiber aus, um herauszufinden, ob Duplex aktiviert ist. Dies mache ich über die Windows API Funktion:
Delphi-Quellcode:
function CanDuplex: Boolean;
var
  Device: array [0..255] of Char;
  Driver: array [0..255] of Char;
  Port: array [0..255] of Char;
  hDevMode: THandle;
  pDevMode: PDeviceMode;
begin
  Result := False;
  Printer.GetPrinter(Device, Driver, Port, hDevMode);
  pDevMode := GlobalLock(hDevMode);
  if pDevMode.dmDuplex <> DMDUP_SIMPLEX then
  begin
    Result := True;
  end;
  GlobalUnlock(hDevMode);
end;
Dies hat bisher immer einwandfrei funktioniert. Ein Kunde mit einem KONICA MINOLTA als Drucker, berichtete mir, dass die Erkennung, ob Duplex eingeschaltet ist nicht funktioniert. Egal ob Duplex im Treiber aktiviert wurde oder nicht, die Abfrage gab immer DMDUP_SIMPLEX zurück.

Meine Vermutung ist, das das Standard Duplex Flag über den Treiber nicht gesetzt wird, sondern irgendwo in den Tiefen des dmDriverExtra-Data Bereich abgespeichert wird. Blos wie komme ich da ran? Hat jemand eine Idee, was man noch abfragen muss/könnte, um die Information ordnungsgemäß zu erhalten?

Für Hilfen und Anregungen wäre ich sehr dankbar.

Viele Grüße,
WiPhi
Wer sucht, der findet. Wer länger sucht, findet mehr.
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Duplexdruck bei KONICA MINOLTA Treibern

  Alt 23. Feb 2018, 13:52
Auch wenn es dich jetzt nicht befriedigt: Bau keine gerätespezifischen Sonderlösungen. Der Kunde hat einen defekten Treiber installiert, soll sich der Kundendienst vom Drucker drum kümmern.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.198 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Duplexdruck bei KONICA MINOLTA Treibern

  Alt 23. Feb 2018, 14:36
Auch wenn es dich jetzt nicht befriedigt: Bau keine gerätespezifischen Sonderlösungen. Der Kunde hat einen defekten Treiber installiert, soll sich der Kundendienst vom Drucker drum kümmern.
Der war gut. Das ist der Standard bei KONICA MINOLTA das es viele Probleme mit dem Treiber gibt.
Kannst du den Kunden bitten das Leasing mit denen zu beenden und einen anderen Gerätehersteller zu verwenden?

Spaß beiseite. Hier wirst du pragmatisch hergehen müssen und bei KONICA MINOLTA einefach "Keine Ahnung" schreiben müssen.
Du kannst auch versuchen ob du *irgendwo* Detailinfos über diesen dmDriverExtra bekommst. Aber wird halt aufwändig.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Duplexdruck bei KONICA MINOLTA Treibern

  Alt 23. Feb 2018, 14:40
Sind das nicht eigentlich alles Kyocera-OEMs? Ich meine mich zu erinnern dass schon mancher seinen Treiber-Ärger mit Minolta- und Utax-Kisten dadurch beheben konnte, dass er den Treiber von der baugleichen Kyo-Kiste verwendet hat.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.646 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Duplexdruck bei KONICA MINOLTA Treibern

  Alt 23. Feb 2018, 15:14
würde es was bringen, einmal den Treiber mit Duplex und einmal ohne einzustellen und den dmDriverExtra dann vergleichen? Da müsste man das Flag doch finden
Sven Harazim
--
  Mit Zitat antworten Zitat
WiPhi

Registriert seit: 19. Feb 2015
90 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Duplexdruck bei KONICA MINOLTA Treibern

  Alt 23. Feb 2018, 18:57
Danke für die zahlreichen Antworten

@Codehunter: Ja eigentlich ist es nicht mein Problem, sondern der jeweiligen IT. Leider ist es heutzutage oft so, dass man Dinge oft besser selbst löst, als der IT Betreuer, der meint es funktioniert doch alles, nur das Programm nicht. Ja ich hab auch schon im Internet gesucht, aber bisher nichts zu den DriverExtra-Daten gefunden. Mir sträuben sich auch schon die Haare da eine Extra-Lösung einzubauen.

@Bernhard Geyer: Ich brauch die Infor ja leider nicht nur zur Anzeige, ob Duplex aktiviert ist, sondern steuere darüber Ausgabemethoden für Dokumente. Ein einfaches Anzeigeproblem wäre ja zu schön

@sh17: Ja das habe ich auch schon überlegt. Ich habe mir sogar schon die DriverExtra-Daten von beiden Konfigurationen abgespeichert (Dank den Jedis geht das super ). Die schau ich mir nächste Woche mal und vergleiche sie. Das wäre zwar nicht schön, aber selten...

Ich habe mir spaßenshalber mal einen Druckertreiber von Minolta installiert (der im Windows verfügbar ist). Auch dort wird die Information nicht übergeben. Das kann doch eigentlich nicht sein, dass ein für Windows zertifizierter Treiber die DevMode Struktur nicht korrekt füllt .
Wer sucht, der findet. Wer länger sucht, findet mehr.
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Duplexdruck bei KONICA MINOLTA Treibern

  Alt 24. Feb 2018, 11:03
Die eigentlich interessante Frage die sich mir stellt: Wenn die Treiber das prinzipiell anders machen, wie kommen dann andere Programme damit klar? Irgendwie kann ich mir nicht vorstellen, dass die alle eine Sonderfunktion für Minolta-Geräte eingebaut haben. Mit ein bisschen Gestöber habe ich das hier für Purebasic gefunden. Vielleicht lässt sich ja daraus was ableiten.

Daneben ist mir an deiner Routine noch was aufgefallen. Du fragst nur dmDuplex ab, nicht jedoch dmFields:
Delphi-Quellcode:
function CanDuplex: Boolean;
var
   Device: array [0..255] of Char;
   Driver: array [0..255] of Char;
   Port: array [0..255] of Char;
   hDevMode: THandle;
   pDevMode: PDeviceMode;
begin
   Result := False;
   Printer.GetPrinter(Device, Driver, Port, hDevMode);
   pDevMode := GlobalLock(hDevMode);
   if ((dmFields or DM_DUPLEX) <> 0) or
      (pDevMode.dmDuplex <> DMDUP_SIMPLEX) then
   begin
     Result := True;
   end;
   GlobalUnlock(hDevMode);
end;
Falls das nicht wirkt, versuchs doch mal so:
Delphi-Quellcode:
function CanDuplex: Boolean;
var
  Device, Driver, Port: array[0..255] of Char;
  hDevMode: THandle;
begin
  Printer.GetPrinter(Device, Driver, Port, hDevmode);
  Result:= WinSpool.DeviceCapabilities(
    Device, Port, DC_DUPLEX, NIL, NIL
  ) <> 0;
end;
Mangels duplexfähigem Drucker kann ich das grad nicht testen. Diese Lösung stammt von hier.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden

Geändert von Codehunter (24. Feb 2018 um 11:14 Uhr)
  Mit Zitat antworten Zitat
WiPhi

Registriert seit: 19. Feb 2015
90 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Duplexdruck bei KONICA MINOLTA Treibern

  Alt 24. Feb 2018, 11:23
Die eigentlich interessante Frage die sich mir stellt: Wenn die Treiber das prinzipiell anders machen, wie kommen dann andere Programme damit klar?
Ich starte bei aktivem Duplex-Druck eine Job-Trennung. Ich zerlege praktisch das Gesamtdokument in kleine Dokumente, so kommen meine physisch zusammengehörenden Informationen auch wirklich nur auf das Blatt, wo es hingehört. Andere Hersteller zählen selbst und fügen bei Bedarf eine Leerseite ein, um auf einem neuen Blatt zu starten. Hat aber den Nachteil, dass wenn der Benutzer z.B. 2 Seiten auf 1 mit Duplex wählt, u.U. Informationen welche nicht auf das Blatt gehören dort wieder landen.

Irgendwie kann ich mir nicht vorstellen, dass die alle eine Sonderfunktion für Minolta-Geräte eingebaut haben. Mit ein bisschen Gestöber habe ich das hier für Purebasic gefunden. Vielleicht lässt sich ja daraus was ableiten.
Danke! Das schau ich mir am Montag mal in Ruhe an

Daneben ist mir an deiner Routine noch was aufgefallen. Du fragst nur dmDuplex ab, nicht jedoch dmFields. Versuchs doch mal so:
Delphi-Quellcode:
function CanDuplex: Boolean;
var
  Device, Driver, Port: array[0..255] of Char;
  hDevMode: THandle;
begin
  Printer.GetPrinter(Device, Driver, Port, hDevmode);
  Result:= WinSpool.DeviceCapabilities(
    Device, Port, DC_DUPLEX, NIL, NIL
  ) <> 0;
end;
Mangels duplexfähigem Drucker kann ich das grad nicht testen. Diese Lösung stammt von hier.
Ich habe die Funktion auch schon versucht, diese liefert mir auch nur zurück, dass der Drucker kein Duplex kann. Aber um sicher zu gehen, werden ich das nächste Woche nochmal testen.

Danke für die Ideen, ich bin gespannt, was ich daraus machen kann
Wer sucht, der findet. Wer länger sucht, findet mehr.
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.646 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Duplexdruck bei KONICA MINOLTA Treibern

  Alt 24. Feb 2018, 13:54
Bei Druckern, die sich weigern das aktivierte Duplex zu verwenden, könnte evtl die Ausgabe der Escape-Sequenz helfen

Einfach nach BeginDoc ausgeben

Delphi-Quellcode:
type
  TPassThroughData = record
      nLen: Word;
      Data: array[0..255] of Byte;
  end;

CONST
  DUPLEX_ON = '&l1S'; //Job Page Duplex Long-Edge Binding
  DUPLEX_OFF = '&l0S';
  ESC = #27;

procedure PrintText(s: string);
var
  PTBlock: TPassThroughData;
begin
  PTBlock.nLen := Length(s);
  StrPCopy(@PTBlock.Data, s);
  Escape(Printer.Handle, PASSTHROUGH, 0, @PTBlock, nil);
end;

      if (not FDuplex) then
        PrintText(ESC+DUPLEX_OFF)
      else
        PrintText(ESC+DUPLEX_ON);
Sven Harazim
--
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.494 Beiträge
 
Delphi 7 Professional
 
#10

AW: Duplexdruck bei KONICA MINOLTA Treibern

  Alt 24. Feb 2018, 15:02
Ohne irgendeine Garantie auf sinnvolle Nutzbarkeit:

http://www.swissdelphicenter.com/de/...de.php?id=1961

http://www.delphipraxis.net/188051-d...instellen.html

http://www.massmind.org/Techref/lang...ELPHI0091.html

http://www.tek-tips.com/viewthread.cfm?qid=1510419

http://www.delphipages.com/forum/sho...d.php?t=162930
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03: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