我需要更改打印属性中的设置,以指定:1.“后台打印文档...”或2.“直接打印到打印机。”如何通过代码更改假脱机/直接打印设置?
this answer J ...表示这可以使用PrintQueue Class完成。怎么样?
MSDN PrintQueue.isDirect(只读属性)这样说:“此属性只能 通过Windows常见的打印对话框中设置”
我假设它特别适用于.net,在绝对意义上可能不是真的。那么如何通过代码更改假脱机/打印直接设置?
我需要更改打印属性中的设置,以指定:1.“后台打印文档...”或2.“直接打印到打印机。”如何通过代码更改假脱机/直接打印设置?
this answer J ...表示这可以使用PrintQueue Class完成。怎么样?
MSDN PrintQueue.isDirect(只读属性)这样说:“此属性只能 通过Windows常见的打印对话框中设置”
我假设它特别适用于.net,在绝对意义上可能不是真的。那么如何通过代码更改假脱机/打印直接设置?
从j的评论...
打印机的各种选项可以通过在Windows注册表中设置。每个 安装的打印机具有在下面的注册表路径的一个子项:\控制\打印\打印机 HKEY_LOCAL_MACHINE \ SYSTEM \ CURRENTCONTROLSET \
在此有一个属性位图,在值属性: REG_DWORD 0002(0×0002)的直接:将文件直接发送至 打印机。
后台打印程序服务可能需要重新启动,因为 的更改才会生效。
请注意,此注册表值包含多个属性。有关更多详细信息,请参阅Windows Spooler Registry。
警告如果使用注册表编辑器或使用其他方法错误地修改了注册表,则可能会出现严重问题。修改注册表需要您自担风险。
这是我以前的文章中的一个错误 - 我已经纠正它。您无法使用该类更改打印模式(后台打印/直接打印)。您可以使用本地WinAPI调用来完成它,可能只是在高级应用程序中,我不确定。但是,这可能不是您的应用程序应该做的事情。这是一个系统范围内的设置,它会导致所有应用程序丢失打印后台打印功能 - 这会严重刺激任何使用打印的用户。如果您需要确保印刷文档的序列化,最好自己管理它。 –
@J ...好的,不要惊讶。这是专用计算机中使用的一次性应用程序,不用于其他用途。因此,全系统是没有问题的,刺激用户也不是问题。当然,我正在同时寻求其他的选择,但是如果我有这种能力,那将会非常有帮助。 –
好吧,总有...... http://www.undocprint.org/winspool/registry当然,您需要管理员权限才能修改注册表项,但这是实现它的一种方法。 –