これは印刷スプールの影響です。アイテムは、スプールが完了するまで印刷キューに追加されないため、印刷された順序ではなく、スプールが完了した順序でキューに入れられます。大きなファイル (画像などを含む) は、小さなファイルよりもスプールに時間がかかるため、スプールが速くなると、後で印刷されるアイテムが最初にスプールを終了する可能性があります。印刷スプールを無効にすることもできますが (提案されているように)、すべてのアプリケーションがスプールに仕事をさせるのではなく、印刷ジョブが完了するまで印刷ジョブをブロックするため、印刷が煩雑になる可能性があります。
別の方法として、独自のアプリケーションで印刷キューを照会することもできます。スプールが終了したことを確認するまで、次の印刷ジョブを送信しないでください (スプールが使用されている場合)。これにより、ユーザーにシステム設定の変更を強制することと、他のプログラムが印刷スプールの利便性にアクセスできないようにすることの両方を強制するという不器用な解決策を回避できます。見る :
PrintQueue クラス
W̶i̶t̶h̶ ̶t̶h̶e̶ ̶a̶b̶o̶v̶e̶ ̶y̶o̶u̶ ̶c̶a̶n̶ ̶p̶r̶o̶g̶r̶a̶m̶a̶t̶i̶c̶a̶l̶l̶y̶ ̶c̶h̶a̶n̶g̶e̶ ̶t̶h̶e̶ ̶s̶p̶o̶o̶l̶/̶d̶i̶r̶e̶c̶t̶ ̶s̶e̶t̶t̶i̶n̶g̶ ̶(̶r̶a̶t̶h̶e̶r̶ ̶t̶h̶a̶n̶ ̶d̶o̶i̶n̶g̶ ̶i̶t̶ ̶v̶i̶a̶ ̶p̶r̶i̶n̶t̶e̶r̶ ̶p̶r̶o̶p̶e̶r̶t̶i̶e̶s̶ ̶m̶a̶n̶u̶a̶l̶l̶y̶)̶ ̶o̶r̶, ( Nevermind, that property is read-only. ) probably better, use something like
PrintQueue.GetPrintJobInfoCollection
印刷ジョブの送信時にキューを監視します。
上記は、Server2008 および VistaSP2 以降でサポートされています。XP 以前の場合は、次のような手順に従う必要がある場合があります。
Windows で印刷キューを照会する方法
おそらくリッスンすることによって:
WM_SPOOLERSTATUS