0

Microsoft Print Spooler APIを使用して印刷ジョブを保持できるかどうかを知っている人はいますか?

プリンターに送る前に保留したいのですが。
これは可能ですか?

4

2 に答える 2

0

AddJobW() と ScheduleJob() を使用している場合は、はい。

AddJobW() がジョブを作成し、ScheduleJob() が開始をトリガーします。(サンプル コードについては、こちらを参照してください。)

そう...

  1. AddJobW() を呼び出してジョブを作成します。
  2. SetJobW() を呼び出して、各ジョブの名前を変更したり、それらをリンクしたり (バッチ処理) したりします。
  3. ScheduleJob() を呼び出して、ジョブを開始します。
于 2012-05-31T07:39:24.860 に答える
0

これは、印刷プロセスをどの程度制御できるかによって異なります。SetJob コマンドを使用すると、個々のジョブを一時停止できますが、データがポートからプリンターに送信される可能性がある前に、一時停止する必要があります。

アプリケーションがジョブを印刷するとき、通常の印刷パスは次のようになります

  • StartDocPrinter
  • StartPagePrinter
  • 書き込みプリンター
  • ....
  • EndPagePrinter
  • ...
  • EndDocPrinter

最初の WritePrinter パスの前に SetJob コマンドを取得できれば、データがデバイスに送信される前にジョブを一時停止できます。

残念ながら、C# の PrintDocument クラスのようなものを使用している場合、このほとんどがわかりにくくなり、SetJob コマンドを呼び出す必要がある JobId パラメータとプリンタ ハンドルを取得する方法が提供されません。

于 2012-04-02T22:58:49.733 に答える