我想将给定Windows打印作业的假脱机数据复制到磁盘上的任意位置。即使启用假脱机文件池,如何找到具有给定ID的作业的假脱机文件?
我有从Print Spooler API打印作业的工作ID。我知道这项工作已完成假脱机。我知道在我有时间完成我需要做的任何事情之前,这份工作不会被删除。
如果文件池被禁用,我可以通过在spool目录中查找格式为“xxxxx.spl”的文件来做到这一点,其中xxxxx是0填充的作业ID。
如何启用文件池功能?
如果有一种方法需要一个工作ID并返回一系列假脱机数据,我会很高兴,但在这一点上似乎不太可能。据推测,使用OpenPrinter
“PrinterName,Job xxxx”和ReadPrinter作为文档here,但到目前为止我有可能类似haven't been able to get it to work,即使我这样做,它看起来像它将数据加载到内存中,我不知道这是如何将使用大型假脱机文件(> 1 GB并不常见)。
我的第二个选择是传入ID并返回磁盘上假脱机数据的文件位置(不管文件池设置如何)。
我的第三选择是将池文件(“FPyyyyy.spl”)映射到它的作业ID。
这些都是可行的吗?还是任何人对如何解决这个问题有更好的想法?
(编辑添加,因为我们不清楚是否知道这个选项): 我们的后备是要求我们的客户通过编辑每个打印机的注册表来禁用假脱机文件池,但是我们更愿意避免这个。
嗨,在你有时间完成你需要做的任何事情之前,你怎么知道这个工作不会被删除?你怎么能保持假脱机文件? – Kira