我从Monitor jobs in a printer queue (.NET)下载了这段代码 . 现在我想知道打印作业的总页数 . 我看到了评论并添加了这段代码:
if ( data[ i ].Field == (ushort)PRINTERJOBNOTIFICATIONTYPES.JOB_NOTIFY_FIELD_TOTAL_PAGES &&
data[ i ].Type == (ushort)PRINTERNOTIFICATIONTYPES.PRINTER_NOTIFY_TYPE )
{
uint pagesCount = data[ i ].NotifyData.adwData[ 0 ];
}
但我总是得到错误的页面 . 我尝试使用“PrinterQueueWatch”,总页数始终为0 .
1 回答
您始终可以使用Win32_PrintJob类来获取打印作业,并且可以从该打印作业中获取总页数 . 请记住,在打印作业状态从假脱机移动到打印(我在自己的代码中经历过)后,总页数可用 .
在我的例子中,我使用WMI来监视打印作业,并且在观察者的
EventArrived
事件处理程序上,我添加了一些代码行来获取打印作业的总页数 .试试这个:
然后
PrintJobChange
订阅EventArrived
处理程序:控制台输出只打印1页到我的虚拟打印机: