毎日印刷するページ数を監視する簡単なアプリを作成しています。私は .Net を使用していますが、使いやすいと思われる System.printing 名前空間を見つけました。
以下は私のコードです。
public static void NumberOfPagesPrintedTest()
{
PrintServer ps = new PrintServer();
PrintQueueCollection printQueues = ps.GetPrintQueues();
foreach (var item in printQueues)
{
//if (item.QueueStatus == PrintQueueStatus.Printing)
//{
item.Refresh();
PrintJobInfoCollection coll = item.GetPrintJobInfoCollection();
if (coll != null)
{
foreach (var jobinfo in coll)
{
Console.WriteLine(jobinfo.NumberOfPages + " printed " + jobinfo.NumberOfPagesPrinted + " printing " + jobinfo.IsPrinting + " printed " + jobinfo.IsPrinted);
}
}
//}
}
}
ただし、印刷中は印刷ページ数が表示されますが、一部のページがすでに印刷された後も変更されず、jobinfo.NumberOfPagesPrinted は常に 0 に等しくなります。実際に印刷されたページ数を取得する方法と、印刷されたページ数を確認する方法何らかの理由でプリンターが停止した場合に印刷されます。