2012-01-18 25 views
1

他のアプリケーション(Word、Excel、PDFリーダー)がJavaアプリケーションでプリンタに送信した印刷の詳細を表示する方法を知りたい。つまり、ユーザーは1台のPCからさまざまな種類の文書をプリンタに送信します。Javaの印刷ジョブを聴く方法

Javaアプリケーションは、プリンタに送信されたドキュメントの数をカウントする必要があります。

これらの詳細をJava SEアプリケーションでどのように取得できますか?あらゆるリソース、有用なリンク、ガイダンスは高く評価されています。

答えて

3

これはJavaを使用して直接行うことはできませんが、回避策があります。

各印刷ジョブには、Windowsスプーラサービスによって生成された2つのスプールファイルがあります。

ジョブ設定用の.SHD拡張子と描画コマンド用の拡張子が.SPLのファイルが1つあります。

これらのファイルは、プリンタごとにユーザー定義の場所に保存できます。すべてのスプーラジョブのデフォルトの場所はc:\windows\system32\spool\PRINTERSです。 [スタート]をクリックして実行]をクリックして、開いたボックスにregedit、その後、 OKをクリックしプリンタごとに

  1. を場所を設定する

  2. <printername>は、お使いのプリンタの 名前である次のレジストリサブキーを見つけます。

    HKEY_LOCAL_MACHINE \ソフトウェアのMicrosoft \ Windowsの\右ペインで

    \ NT \ CurrentVersionの\印刷\プリンター、 SpoolDirectoryを右クリックし、[変更]をクリックします。

  3. [値のデータ]ボックスに、スプールファイルを格納する場所を入力します。 たとえば、デフォルトの の場所にc:\windows\system32\spool\printersと入力します。

  4. レジストリエディタを終了します。プリントスプーラサービスを再起動します。

すべての新規雇用はフォームXXXXX.SPLXXXXX.SHDのものであろうと、そのJobIDsで一貫して番号が付けられます。

Javaを使用すると、プリンタサービスまたは特定のプリンタに送信される新しいジョブを監視できます。

+0

ありがとうございました。あなたが言われたように、フォルダがあります。もっと説明してください。私は知りたいです.SHDファイルは印刷ごとに作成されていますか?(例:1つの文書、1つの.SHDファイル)、そしてこのファイルの存続期間は?(コマンドがプリンタに送られるまで、私は自分のフォルダを見上げたが、空であったが、それはきれいだった。これらのファイルを数えますか?さらにプリンタがある場合、どのプリンタがどの.SHDに属しているかをどのように識別できますか?(ジョブid番号には、どのプリンタのジョブが印刷されますか) –

+0

印刷ジョブが完了すると、これらのファイルはクリアされます。私はこれまでに仕事をしていない、それは私の心に来た考えです。 – John

+0

http://www.undocprint.org/winspool/spool_files – John

関連する問題