2012-10-12 4 views
17

Ich möchte die Spool-Daten für einen bestimmten Windows-Druckauftrag an einen beliebigen Speicherort auf der Festplatte kopieren.Wie finde ich die Spool-Datei für den Job mit einer bestimmten ID, auch wenn Spooldatei-Pooling aktiviert ist?

Ich habe die Job-ID des Druckauftrags von der Print Spooler API. Ich weiß, dass dieser Job das Spoolen beendet hat. Ich weiß, dass der Job nicht gelöscht wird, bevor ich Zeit habe, um alles zu erledigen, was ich tun muss.

Wenn das Datei-Pooling deaktiviert ist, kann ich dies im Spool-Verzeichnis nach der Datei im Format "xxxxx.spl" suchen, wobei xxxxx die 0-gefüllte Job-ID ist.

Wie kann ich das tun, wenn das Datei-Pooling aktiviert ist?

Ich wäre erfreut, wenn es eine Methode gäbe, die eine Job-ID und einen Stream der Spool-Daten zurückgab, aber das scheint zu diesem Zeitpunkt unwahrscheinlich. Angeblich könnte etwas Ähnliches möglich sein mit OpenPrinter mit "PrinterName, Job xxxx" und ReadPrinter wie dokumentiert here, aber so weit ich haven't been able to get it to work, und selbst wenn ich es sehe, wie es die Daten in den Speicher lädt, und ich bin mir nicht sicher, wie dies funktioniert mit großen Spool-Dateien (> 1 GB ist nicht ungewöhnlich).

Meine zweite Präferenz wäre eine Möglichkeit, die ID zurückzugeben und den Speicherort der Datei mit den Spool-Daten auf der Festplatte zurückzubekommen (unabhängig von der Einstellung für das Datei-Pooling).

Meine dritte Einstellung wäre eine Möglichkeit, eine gepoolte Datei ("FPyyyyy.spl") der Job-ID zuzuordnen, für die sie bestimmt ist.

Sind irgendwelche von diesen machbar, oder hat jemand eine bessere Idee, wie man dieses Problem löst?

(Edited hinzufügen, da es nicht klar war, dass wir diese Option wussten): Unsere Fallback ist, dass unsere Kunden Spool-Datei-Pooling durch Bearbeiten der Registrierung für jeden Drucker deaktivieren, aber wir würden viel lieber vermeiden Dies.

+0

Hallo, wie können Sie "wissen, dass der Job nicht gelöscht wird, bevor Sie Zeit haben, um alles zu erledigen, was Sie tun müssen."? Wie können Sie die Spool-Dateien behalten? – Kira

Antwort

8

ich figured out warum meine Anrufe zu OpenPrinter versagten und ich habe die Spool-Daten erfolgreich gelesen OpenPrinter und ReadPrinter verwenden, die schön unser Problem löst.

Ich werde immer noch das Kopfgeld an jemanden vergeben, der eine bessere Lösung hat.

1

Haben Sie das gelesen?

http://www.undocprint.org/winspool/spool_files

Es scheint, alles, was Sie brauchen :)

zu haben

Insbesondere To Turn Off Spool File Pooling on a Per Printer Queue-Basis

Es ist auch dieser Artikel über das Format der Spool-Dateien http://www.codeproject.com/Articles/9720/The-Windows-NT-print-spool-shadow-file-format jedoch aber es scheint, dass Sie bereits das Format kennen und es wird wahrscheinlich keine Hilfe sein.

+0

Ja, ich habe diese Seite gelesen. Wir möchten auf die Spool-Daten zugreifen, ohne das Spool-File-Pooling zu deaktivieren. Es ist etwas, das wir unseren Kunden ersparen möchten, die Registrierung für jeden von ihnen erstellten Drucker zu bearbeiten (oder zu versuchen, dies für sie zu tun). –

Verwandte Themen