java总页数_从打印作业中获取总页数

您始终可以使用Win32_PrintJob类来获取打印作业,并且可以从该打印作业中获取总页数 . 请记住,在打印作业状态从假脱机移动到打印(我在自己的代码中经历过)后,总页数可用 .

在我的例子中,我使用WMI来监视打印作业,并且在观察者的 EventArrived 事件处理程序上,我添加了一些代码行来获取打印作业的总页数 .

试试这个:

public void PrintJobChange(object sender, EventArrivedEventArgs e)

{

ManagementBaseObject objProps = (ManagementBaseObject)e.NewEvent.Properties["TargetInstance"].Value;

...

string jobStatus = (string)objProps["JobStatus"];

uint totalPages = ((uint)objProps["TotalPages"]);

Console.WriteLine("Status: " + jobStatus + ", Total Pages: " + totalPages);

}

然后 PrintJobChange 订阅 EventArrived 处理程序:

public void MonitorPrintJobs()

{

string queryClassName = "__InstanceOperationEvent";

string queryCond = "TargetInstance ISA 'Win32_PrintJob'";

TimeSpan queryTimeSpan = new TimeSpan(1);

try

{

WqlEventQuery eventQuery = new WqlEventQuery(queryClassName, queryTimeSpan, queryCond);

ManagementEventWatcher watcher = new ManagementEventWatcher(eventQuery);

if (PrintJobChange != null)

{

watcher.EventArrived += PrintJobChange;

}

watcher.Start();

}

catch (Exception ex)

{

string msg = string.Format("Error monitoring print jobs. Exception {0} Trace {1}.",

ex.Message, ex.StackTrace);

MessageBox.Show(msg, "Error", MessageBoxButton.OK, MessageBoxImage.Error);

}

}

控制台输出只打印1页到我的虚拟打印机:

Status: Spooling, Total Pages: 0

Status: Printing, Total Pages: 1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值