如何在打印机池方案中获取打印作业的端口名称

时间:2017-04-28 14:11:33

标签: c# delphi winapi printing spooler

在窗户中 - >打印机和设备 - >实际的打印队列有(最后一个)列名为Port like here

启用打印机池时,会显示文档正在打印的端口名称(对于真实打印机),如第一个c:\ ports \ p1,第二个c:\ ports \ p2(或port_2121和port_2122 ...等) 。 我想获得相同的信息。

我检查了Enumjobs和JOB_INFO_1 - 4结构,其中没有一个是port或portname成员。 我测试过,pPrinterName也一样。因此,即使从那一侧也可以访问它。

任何想法我怎么能得到作业打印的端口? (就像打印队列一样)

THX

2 个答案:

答案 0 :(得分:1)

您可以使用带有FindNextPrinterChangeNotification字段的JOB_NOTIFY_FIELD_PORT_NAME函数执行此操作。启用打印机池并且一个端口为buzy时,可以更改此值

答案 1 :(得分:0)

可以从PRINTER_INFO_2结构中检索端口名称。 JOB_INFO结构有一个名为pPrinterName的字段,您可以使用此字段来获取打印机的PRINTER_INFO_2结构。

这是一个例子: http://www.swissdelphicenter.ch/en/showcode.php?id=1909

以下是PRINTER_INFO_2的详细信息:

https://msdn.microsoft.com/en-us/library/windows/desktop/dd162845(v=vs.85).aspx