Vorrei copiare i dati di spooling per un dato lavoro di stampa di Windows in una posizione arbitraria su disco.Come trovo il file di spool per il lavoro con un dato ID anche quando è abilitato il pooling di file di spool?
Ho l'ID del lavoro di stampa da Print Spooler API. So che questo lavoro ha finito lo spooling. So che il lavoro non sarà cancellato prima che abbia il tempo di completare tutto ciò che devo fare.
Se il pool di file è disabilitato, è possibile farlo osservando nella directory di spool il file con il formato "xxxxx.spl", dove xxxxx è l'ID del processo con 0 inserito.
Come posso fare se il pool di file è abilitato?
Sarei lieto se ci fosse un metodo che ha preso un ID lavoro e restituito un flusso dei dati di spool, ma a questo punto sembra improbabile. Presumibilmente qualcosa di simile potrebbe essere possibile usando OpenPrinter
con "PrinterName, Job xxxx" e ReadPrinter come documentato here, ma finora I haven't been able to get it to work, e anche se lo faccio sembra che carichi i dati in memoria, e non sono sicuro di come questo funzionerà con file di spool di grandi dimensioni (> 1 GB non è insolito).
La mia seconda preferenza sarebbe un modo per passare l'ID e recuperare la posizione del file con i dati di spool sul disco (indipendentemente dall'impostazione del pool di file).
La mia terza preferenza sarebbe un modo per mappare un file raggruppato ("FPyyyyy.spl") all'ID lavoro per cui è.
Alcuni di questi sono fattibili o qualcuno ha un'idea migliore su come risolvere questo problema?
(A cura di aggiungere in quanto non era chiaro che eravamo consapevoli di questa opzione): nostro fallback è quello di richiedere che i nostri clienti disattivare spool file di messa in comune modificando il Registro di sistema per ogni stampante, ma ci sarebbe molto preferisce evitare di Questo.
Ciao, come fai "sai che il lavoro non sarà cancellato prima che tu abbia il tempo di completare tutto ciò che devi fare".? Come puoi mantenere i file di spool? – Kira