有谁知道是否可以在 Microsoft Print Spooler API的帮助下进行打印作业?
我想在它被发送到打印机之前保留它。
这可能吗?
有谁知道是否可以在 Microsoft Print Spooler API的帮助下进行打印作业?
我想在它被发送到打印机之前保留它。
这可能吗?
如果您使用的是 AddJobW() 和 ScheduleJob(),那么可以。
AddJobW() 创建作业并 ScheduleJob() 触发它开始。(有关示例代码,请参见此处。)
所以...
这取决于您对打印过程的控制程度。SetJob 命令确实允许您暂停单个作业,但您需要在任何数据可能从端口发送到打印机之前进入。
当应用程序打印作业时,正常的打印路径类似于
如果您可以在第一个 WritePrinter 路径之前获取 SetJob 命令,您将能够在将任何数据发送到设备之前暂停作业。
不幸的是,如果您使用的是 C# PrintDocument 类之类的东西,它会掩盖大部分内容,并且不提供任何获取 JobId 参数和打印机句柄的方法,您需要调用 SetJob 命令。