ローカルネットワーク上でプリンタに送信されたすべての印刷ジョブを検出しようとしています。私はジョブ名、送信時間などのジョブのいくつかのプロパティを表示したい。C#.NETで印刷ジョブを取得する方法
私はwhileループを試しましたが、スレッドがスリープしている間に発生した可能性がある、私の印刷ジョブをキャッチしませんでした。登録して処理できるイベントはありますか?私は、このタスクをインフェイブルにルーピングするために、すべてのCPUリソースを費やしたくありません。
は、私はこれを試してみました:public static void WritePrinterJobs()
{
while (true)
{
foreach (var job in LocalPrintServer.GetDefaultPrintQueue().GetPrintJobInfoCollection())
{
Console.WriteLine(job.Submitter + " " + job.TimeJobSubmitted.ToShortDateString());
}
Thread.Sleep(100);
}
}
EDIT:上記のコードは、実際に、あなたはそれが、私のミスが正しくデフォルトのプリンタを設定していなかったあなたのための作業を行う場合は、より低いレベルに行く必要はありません動作します 。
http://stackoverflow.com/questions/6506916/eventsを見つけることができます-in-printqueue – adt
foreachループを使用していて、一度に多くの印刷ジョブが発生すると、コードが見つかる前に印刷される文書が印刷されることがありますそれでも –
まだタイマーを使って印刷ジョブを確認する必要はありますか?私は、私が引っ掛けることができるJobAddedの種類のイベントはないと思いますよね? –