2011-02-01 21 views
1

ユーザーがアプリケーションから印刷したとき、プリンタイベントのどこからでもファイルのファイル名を検出する方法はありますか?私はどのファイルが印刷されているかを判断できるWindows APIを探しています。印刷時にファイル名を取得

答えて

2

プリントジブは名前で開きますが、通常これはファイル名を意味するものではありません。プリントキューに表示される名前はプリンタドライバに直接問い合わせることでアクセスできます。

1

プリンタドライバには、ファイル名を見つけるための外部APIはありません。私はあなたが送信されているジョブの印刷キューを監視するアプリの種類のsystrayエージェントの種類を作成することを見ていると仮定します。もしそうなら -

  1. あなたは
  2. 印刷ジョブステータスの印刷キューを監視することができますマイクロソフトツールのhttp://support.microsoft.com/kb/196805を参照してくださいには、Windowsは、プリンタの変更通知をサポートする方法について説明したhttp://msdn.microsoft.com/en-us/library/ff562742%28v=vs.85%29.aspxを参照してください。これを登録してプリントキューへのハンドルを取得するアプリケーションを作成することができます。ハンドルを取得すると、GetPrinterおよびGetJob APIを呼び出して、JOB_INFO_2構造体にアクセスできます。 JOB_INFO_2構造体のpDocumentNameはファイルの名前です

希望します。もしそうなら、+1を投票してください:)

+0

あなたのリンク#1は死んでいますが、私はいくつかのマイクロソフトのプリントキューモニターのためにGoogleを見ましたが、私はこれを見つけました:http://technet.microsoft.com/en-us/library/cc784766%28v=ws.10%29。 aspx これは間違いありませんか? –

1

いいえ、少なくとも信頼性はありません。ファイル名はまったくないかもしれないことに留意してください。たとえば、メモ帳のようなアプリケーションを開いて、何かを入力して印刷することができます。どのファイルを印刷していますか?なし。

上記のシナリオでは、ほとんどのアプリケーションは「タイトルなし」のような何らかのデフォルトのファイル名を提供しますが、印刷ジョブの名前を解析することによってその名前を見つけることができます。たとえば、GetJobを呼び出すと、構造体のpDocumentメンバには印刷ジョブの名前へのポインタが含まれ、その名前にはファイル名が含まれることがよくあります。

ただし、すべてのアプリケーションでフォーマットが異なりますが、一部のアプリケーションではそれをまったく提供しません。その答えは、おそらく75%の時間のファイル名を多くの努力で見つけることができますが、単純に100%の解決策はありません。

関連する問題