フォーラム


ゲスト  

ようこそ ゲスト さん。このフォーラムに投稿するには 登録が必要です。

ページ: [1]
トピック: プリンタの状態の取得
Mr.XRAY
メンバー
投稿数: 192
プリンタの状態の取得
on: 2013/06/12 13:45 Wed

印刷の際,プリンタの状態を取得したい場合があります.これは,PRINTER_INFO 構造体等で取得できます.
しかし,取得できない状態もあります.例えば,プリンタの電源の ON, OFF は取得できないことがあります.
これは,プリンタドライバによります.

Windows API を使用してプリンタの状態を取得する際,
API は物理プリンタ,つまり,実際のプリンタと通信するわけではありません.
プリンタドライバとの通信となります.
該当するプリンタドライバが,その情報を取得できるようになっていないと取得できません.
一度,プリンタドライバを最新のものに更新してみるといいかも知れません.もしかしたから,ということもあります.
また,プリンタドライバに印刷ジョブを送信しないと取得できない情報があることにも注意してください.

物理プリンタと直接通信する方法もあります.
プリンタデバイスに直接コマンドを送信します.
それには,プリンタのメーカーが提供している,それらのコマンド類の仕様を知る必要があります.
MS-DOS の時代は,この方法で印刷のプログラムを作成していました.
したがって,プリンタメーカーあるいは,プリンタによって印刷のコードが違うこともありました.

[備考]
プリンタ関係では,環境として,プリンタ名や,もし可能であれば,プリンタドライバの情報も追加しておくといいですね.
動作確認作業が容易となります.というより,情報がないと,動作確認作業に入れません.

参考 [010_PRINTER_INFO 構造体とプリンタの列挙]
http://mrxray.on.coocan.jp/Delphi/plSamples/010_Printer_Info_Structure.htm

Mr.XRAY
メンバー
投稿数: 192
Re: プリンタの状態の取得
on: 2013/06/12 17:12 Wed

プリンタの状態,情報は,WMI の Win32_Printer クラスでも取得できます.
もしかしたら,他にもあるかも知れません.

[Win32_Printer クラス - WMI Library]
http://www.wmifun.net/library/win32_printer.html
[WMI Delphi Code Creator]
http://theroadtodelphi.wordpress.com/wmi-delphi-code-creator/
[WMIを、もっと使おう!] (PDF)
http://edn.embarcadero.com/print/images/42352/g6_6.pdf

Mr.XRAY
メンバー
投稿数: 192
Re: プリンタの状態の取得
on: 2013/06/14 14:26 Fri

ところで,印刷の情報を取得する関数に,WinSpool.GetJob という関数があります.
しかし,ネット上で検索しても,サンプルコードをほとんど見つけることができません.少なくても Delphi に関しては.

個人的な推測なんですが,この GetJob 関数の第 2 引数には,印刷ジョブを識別するハンドルが必要です.
これは,StartJob や AddJob 等の Windows API で印刷のコードを書いた場合に取得できる値です.
Delphi では ほとんど TPrinter のメソッド類を使うからではないかと思っているのですが,どうでしょうか.

[GetJob function (Windows)] MSDN
http://msdn.microsoft.com/en-us/library/windows/desktop/dd144894%28v=vs.85%29.aspx

ページ: [1]
WP Forum Server by ForumPress | LucidCrew
バージョン: 1.7.5 ; ページロード: 0.032 sec.