@omata: ich habe gedacht, dass der wichtigste Teil des Quellcodes ausreichen würde, um das Problem zu verstehen. Ich sehe aber auch ein, dass eine, ohne weitere Anpassungen startbare, Routine/Funktion sehr viel hilfreicher ist. Ich werde in Zukunft darauf achten.
Nun zurück zu meinem Problem.
Dein Tipp funktioniert leider nicht. Übrigens hast du die Fields-Maskierung vergessen:
Delphi-Quellcode:
...
DevMode := GlobalLock(hDeviceMode);
DevMode^.dmDefaultSource:=1;
DevMode^.dmFields := DevMode^.dmFields or DM_DEFAULTSOURCE; //dmFields-Maskierung
...
Die Druckeinstellungen im PRN-Dokument werden hier bevorzugt. Die Windows Druckeinstellungen (die man mit dem oberen Code einstellt) werden nicht berücksichtigt. Die Druckaufträge, die vom PostScript RAW-Drucker des Clients kommen (siehe mein Diagramm im Anhang), müssen an unterschiedliche Drucker und auf unterschiedliche Druckerschächte umgeleitet werden (unabhängig vom Treiber des RAW-Druckers).
Da die Priorität anscheinend nicht geändert werden kann, habe ich mir gedacht man könnte doch den Text im Buffer analysieren/auswerten
. Kommt im Buffer eine Zeichenkette mit "
MediaPosition" (siehe unten) vor, wird diese dynamisch verändert und anschließend mit WritePrinter an den Drucker geschickt (in den PRN-Dateien wird mit MediaPosition der Druckerschacht vorgegeben).
Auszug aus einer PRN-Datei (
PostScript Dialect):
Code:
%%BeginFeature: *InputSlot Fach 5
<</ManualFeed false /MediaPosition 5>> setpagedevice //für Schacht 3 muss MediaPosition 5 durch MediaPosition 3 ersetzt werden!
%%EndFeature
Nachdem ich die Idee ausprobiert habe, werde ich die Ergebnisse hier beschreiben.