![]() |
Duplexdruck bei KONICA MINOLTA Treibern
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:
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.
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; 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 |
AW: Duplexdruck bei KONICA MINOLTA Treibern
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.
|
AW: Duplexdruck bei KONICA MINOLTA Treibern
Zitat:
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. |
AW: Duplexdruck bei KONICA MINOLTA Treibern
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.
|
AW: Duplexdruck bei KONICA MINOLTA Treibern
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
|
AW: Duplexdruck bei KONICA MINOLTA Treibern
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 :D @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 :D). 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 :roll:. |
AW: Duplexdruck bei KONICA MINOLTA Treibern
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
![]() Daneben ist mir an deiner Routine noch was aufgefallen. Du fragst nur dmDuplex ab, nicht jedoch dmFields:
Delphi-Quellcode:
Falls das nicht wirkt, versuchs doch mal so:
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;
Delphi-Quellcode:
Mangels duplexfähigem Drucker kann ich das grad nicht testen. Diese Lösung stammt von
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; ![]() |
AW: Duplexdruck bei KONICA MINOLTA Treibern
Zitat:
Zitat:
Zitat:
Danke für die Ideen, ich bin gespannt, was ich daraus machen kann :) |
AW: Duplexdruck bei KONICA MINOLTA Treibern
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); |
AW: Duplexdruck bei KONICA MINOLTA Treibern
Ohne irgendeine Garantie auf sinnvolle Nutzbarkeit:
![]() ![]() ![]() ![]() ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz